C 基于基本阵列,无法访问阵列元素?
嗨,朋友们, 我是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
#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;
}
我想代码很简单,可以理解?谢谢你的快速回复…你能解释一下它是如何工作的吗…谢谢!