C语言解答。int *p_data[10] 与int (*p_data)[10]有什么区别
1个回答
展开全部
*p_data[10]是指针数组,存放指针变量。如int *p1, *p2; p_data[0] = p1; p_data[1] = p2;
(*p_data)[10]是数组指针,指向具有10个元素的数组,如10个int data1[10], data2[10];p_data[0] = data1,
p_data[1] = data2; 等价于指向 int data[10][10]类型的数组指针;
(*p_data)[10]是数组指针,指向具有10个元素的数组,如10个int data1[10], data2[10];p_data[0] = data1,
p_data[1] = data2; 等价于指向 int data[10][10]类型的数组指针;
追问
就是说(*p_data)[10]是指向10个数组,这10个数组每个都有10个元素??
追答
举个例子吧。
int data[20][10]; /* 20行 10列的二维数组 */
int data2[20][5]; /* 20行,5列的二维数组 */
int (*p_data)[10]; /* 指向 n行 10列的 二维数组指针 */
p_data = data; /* 正确 */
p_data= data1; /* 错误 */
p_data 是指向二维数组的指针,(*p_data)[10]相当于(*行)[列],这里列是固定的,行是可变的。如果还不能理解可以这样想,该指针是 指向 二维数组 “行” 的 指针,并且指定了列的宽度为10.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询