C 基于基本阵列,无法访问阵列元素?

C 基于基本阵列,无法访问阵列元素?,c,pointers,C,Pointers,嗨,朋友们, 我是C语言的新手。我正在努力学习它,我在数组中的一些地方被卡住了。请检查以下程序 #include <stdio.h> #include <stdlib.h> int arr1[] = {10,20,30,40,50}; int arr2[] = {5,15,25,35,45}; int *main_arr[] = {arr1,arr2}; int main() { printf("in first array 0th locatin value

嗨,朋友们, 我是C语言的新手。我正在努力学习它,我在数组中的一些地方被卡住了。请检查以下程序

#include <stdio.h>
#include <stdlib.h>


int arr1[] = {10,20,30,40,50};
int arr2[] = {5,15,25,35,45};

int *main_arr[] = {arr1,arr2};

int main()
{
 printf("in first array 0th locatin value is: %d\n",*main_arr[0]);
 system("PAUSE");   
 return 0;
}
#包括
#包括
int arr1[]={10,20,30,40,50};
int arr2[]={5,15,25,35,45};
int*main_arr[]={arr1,arr2};
int main()
{
printf(“在第一个数组中,第0个位置值为:%d\n”,*main_arr[0]);
系统(“暂停”);
返回0;
}
通过使用printf,我可以打印第0个位置的值,但无法获取如何访问元素的其余部分…请帮助我

你想要什么

...: %d\n",(main_arr[0])[0]);
           -------------      ->arr1
                        ---   ->arr1[0]
main\u arr
指向两个数组
arr1
arr2
。因此
main\u arr[0]
指向第一个数组的第一个元素。要访问其他元素,请修改第二个
[0]

另一种更丑陋但更接近当前代码的方法是使用指针算法

...s: %d\n",*(main_arr[0]+1));

请记住,
arr[1]
*(arr+1)
主arr中只有两个指针,指向arr1和arr2的地址

main_arr| ptr to an array | -> arr1
        | ptr to an array | -> arr2
因此,您可以使用
main\u arr[0][1]
访问
arr1
的第二个元素,因为
main\u arr[0]
指向arr1的第一个元素的地址

你应该知道,在C语言中,如果p是一个指针,那么
p[3]
3[p]
将计算为
*(p+3*sizeof(type))
,所以让我们假设
p=main\u arr[0]
,然后
p[1]
,也就是
main\u arr[0][1]
,将计算为
*(main\u arr[0]+1*sizeof(int)),这与
arr1[1]
的值相同

#包括
#include <stdio.h>
#include <stdlib.h>


int arr1[] = {10,20,30,40,50};
int arr2[] = {5,15,25,35,45};

int *main_arr[] = {arr1,arr2};

int main()
{
 int iter1, iter2;
 for(iter1 = 0; iter1 < 2; iter1++){
    for(iter2 = 0; iter2 < 5; iter2++){
        printf("in first array nth locatin value is: %d\n",(main_arr[iter1][iter2]));
    }
 }
 system("PAUSE");   
 return 0;
}
#包括 int arr1[]={10,20,30,40,50}; int arr2[]={5,15,25,35,45}; int*main_arr[]={arr1,arr2}; int main() { int-iter1,iter2; 对于(iter1=0;iter1<2;iter1++){ 对于(iter2=0;iter2<5;iter2++){ printf(“在第一个数组中,第n个位置值为:%d\n”,(main_arr[iter1][iter2]); } } 系统(“暂停”); 返回0; }

我想代码很简单,可以理解?

谢谢你的快速回复…你能解释一下它是如何工作的吗…谢谢!