-
一维数组名就是数组的首地址
在一维数组中a表示数组首元素地址。
#include <stdio.h>
#include<stdlib.h>
int main()
{
int a[3] = {1,2,3};
int *p,*p1;
p1 = &a[0];
p = a;
printf("%d\n",*p);
printf("%d\n",*p1);
system("pause");
return 0;
}
运行效果如下所示:
-
二维数组
定义一个二维数组如下所示:
int a[2][2] = {{3,4},{1,2}};
2.1
a[0] :a[0]中第1列元素的地址,&a[0][0]。
a[1]:第2列元素的地址,&a[1][0]。
测试代码:
#include <stdio.h>
#include<stdlib.h>
int main()
{
int a[2][2] = {{3,4},{1,2}};
printf("%d\n",*a[0]);
printf("%d\n",*a[1]);
system("pause");
return 0;
}
运行结果如下:
2.2
在二维数组中a表示第1行元素的地址,a+ i表示第i行元素的地址。
#include <stdio.h>
#include<stdlib.h>
int main()
{
int a[2][2] = {{3,4},{1,2}};
printf("%d\n",*(a[0]+0));
printf("%d\n",*(a[0]+1));
printf("%d\n",*(a[1]+0));
printf("%d\n",*(a[1]+1));
system("pause");
return 0;
}
运行结果如下:
2.3
*a:相当于首行首元素地址。
测试代码
#include <stdio.h>
#include<stdlib.h>
int main()
{
int a[2][2] = {{3,4},{1,2}};
printf("%d\n",*a[0]);
printf("%d\n",**a);
system("pause");
return 0;
}
运行结果如下所示:
2.4
*a==a[0]==&a[0][0]
测试代码:
#include <stdio.h>
#include<stdlib.h>
int main()
{
int a[2][2] = {{3,4},{1,2}};
printf("%d\n",*a);
printf("%d\n",a[0]);
printf("%d\n",&a[0][0]);
system("pause");
return 0;
}
运行结果如下所示:
int a[3] = {1,2};
*a :1
int a[2][2] = {{3,4},{1,2}};
*a 是{3,4}的首地址