C语言中 int*p[4] 和 int(*p)[4]的区别是什么?
2个回答
展开全部
int*p[4]是指针的数组,也就是说它是一个数组,数组里存的是一个个的指针
int(*p)[4]是数组的指针,也就是说它是一个指针,指向的是一个数组。指针指向的类型会影响到指针加减运算时地址的位移。比如说有一个数组 int a[4],加上取址运算符 &a,这个表达式的类型就是指向数组的指针,可以这样赋值 p = &a;。一般用于向函数传递二维数组的时候使用这种类型,这时还有一种更直观的写法
void matrix_sum(int matrix_a[][4], int matrix_b[][4]) {...}
这种写法和
void matrix_sum(int (*matrix_a)[4], int (*matrix_b)[4]) {...}
是等价的。
int(*p)[4]是数组的指针,也就是说它是一个指针,指向的是一个数组。指针指向的类型会影响到指针加减运算时地址的位移。比如说有一个数组 int a[4],加上取址运算符 &a,这个表达式的类型就是指向数组的指针,可以这样赋值 p = &a;。一般用于向函数传递二维数组的时候使用这种类型,这时还有一种更直观的写法
void matrix_sum(int matrix_a[][4], int matrix_b[][4]) {...}
这种写法和
void matrix_sum(int (*matrix_a)[4], int (*matrix_b)[4]) {...}
是等价的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询