C基础-2 数组指针测试
void test1() { int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; int(*p)[4]; p = (int(*)[4])a; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) printf("%d、", p[i][j]); //或者 *(*(p+i)+j) 或者 *(p[i]+j) printf("\n"); } }
数组指针,指的是数组名的指针,即数组首元素地址的指针。即是指向数组的指针。例:int (*p)[4]; p即为指向数组的指针,又称数组指针
输出:
1、换成如下代码输出结果改变
void test1()
{
int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
int(*p)[2];
p = (int(*)[2])a;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++) printf("%d、", p[i][j]); //或者 *(*(p+i)+j) 或者 *(p[i]+j)
printf("\n");
}
}
2、换成下面代码,跳过2个元素
3、下面代码一次跳过4个元素
可见定义(*p)[n]中n的大小,影响数组方式取值和自身地址计算。
4、下面这个代码输出和直接按数组方式使用是不一样的
本博客是个人工作中记录,更深层次的问题可以提供有偿技术支持。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。