数组指针赋值
发布网友
发布时间:2022-05-22 07:36
我来回答
共3个回答
热心网友
时间:2024-03-07 09:01
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (* p)[3] ;
p = &a[0];
首先解释一下int (* p)[3] ;指向数组的指针,首先它是一个指针,只是一个,它用指向一个数组,该数组有3个元素,这个是比较通俗的说法了。
你的a[2][3]就是
1 2 3
4 5 6
而p = &a[0];表示p指向的是第一行的1 2 3,就代表p[0]=1,p[1]=2,p[2]=3
不是
(*p)[0] = &a[0]
(*p)[1] = &a[1]
(*p)[2] = &a[2]的意思 而且a[2]的地址都跑到末尾了,里面都么有东东了,这个2,3界限不好说。我说一个
int a[2][10000]{{1,2,3},{4,5,6}};
int (*p)[1000];
p=&a[0];
热心网友
时间:2024-03-07 09:02
不是,int (*p)[3],是定义一个指向一维数组(大小是3)的指针
所以 p = a = &a[0] = &a[0][0];
*p = p[0] = &a[0][0];
*(p+1) = p[1] = &a[1][0];
(*p)[0] = p[0][0] = a[0][0];
(*p)[1] = p[0][1] = a[0][1];
热心网友
时间:2024-03-07 09:02
额 不是的
应该是这样只的:
(*p)[0] = a[0][0];
(*p)[1] = a[0][1];
(*p)[2] = a[0][2];
p+1 == &a[1] == &a[1][0];