版权声明:本文为CSDN博主「Lemon_jay」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Lemon_jay/article/details/83007589
前几天在作题的时候发现有个关于指针和二维数组的问题困扰了我
题目是: 利用指针输出二维数组的元素。
#include<stdio.h>
int main(){
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p<a[0]+12;p++){
if((p-a[0])%4==0)
printf("\n");
printf("%4d",*p);
}
return 0;
}
作题的时候for循环的初始条件p=a[0]困扰了我,我想一个指针在赋值的时候居然直接赋值。百度后我发现这是个二维数组在看了Lemon_jay的文章明白了二维数组首地址、首行地址和元素地址。
明白了p=a[0]将0行的首地址赋给p同时0行是二维数组的首行即a[0]就是二维数组的首地址