怎么做公众号,seo平台怎么样,建设企业银行app官方下载,安徽网页设计的公司有哪些定义a为二维数组后#xff0c;有三种成份#xff1a;数组本身、3个一维数组#xff08;a的每一行对应一个一维数组#xff09;、12个数组元素#xff0c; 由此就有三种指针及对应的指针变量#xff0c; a和int #xff08;*p1#xff09;#xff3b;3#xff3d…定义a为二维数组后有三种成份数组本身、3个一维数组a的每一行对应一个一维数组、12个数组元素 由此就有三种指针及对应的指针变量 a和int *p134没有实用意义、ai和int *p24当i为0时a0可简化为a、aij和int *p3 由于指针类型匹配是完全匹配所以初始化形式必须严谨。 上面有人写出 int (*p)[4]a; 则是类型不匹配指向一维数组的指针变量指向了二维数组尽管有些编译器只给warning、尽管有人认为指针值二维数组a和一维数组a0的地址值是相同的事实是类型不匹配、错误 还有人写出 int *p a[0][0];/*或者int *p a[0];*/ 这个指针变量是指向数组元素的没有了数组结构信息因此用该指针变量访问数组元素时只能再提供列数信息进行地址计算 *pi*列数j 结论是 int *p4a/*或者int *p4a0*/ 是严格指针类型匹配的且p具有数组结构信息列数可以直接访问数组元素 **pij等价于aij 提供一个小“伎俩”供分析用指针变量左边一个*可等效替换为右边一个两个*可等效替换为。。。 上面为引用自CSDN的讨论 写个程序测试一下 1: #include stdio.h 2: 3: int main() 4: { 5: int s[3][5]{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}}; 6: int i, j; 7: int (*p)[5] s;//s[0]; 8: int *q s[0][0]; 9: 10: printf(%d ,s[0][0]); 11: printf(%d ,*s[0]); 12: printf(%d ,**s); 13: 14: printf(%d ,*(*(p2)2) ); 15: printf(%d ,*(q12)); 16: } 转载于:https://www.cnblogs.com/ppazhang/archive/2013/05/23/3094180.html