今天是指针的续章,我们接着来了解数组和指针的关系,话不多说先看第一个代码。
一,数组名与指针变量
#include<stdio.h>
int main()
{
int a[5];
int * p;
printf("%d\n",a);// a是数组名
printf("%d\n",&a[0]);//a[0]是数组的第一个房间
p = a;//这里说明数组名是一个指针变量
printf("%d\n",p);//以上的三个输出都是相等的
return 0;
}
二、基于指针的数组运算
#include<stdio.h>
int main()
{
int a[5];
int * p;
printf("%d\n",a+1);// a是数组名
printf("%d\n",&a[1]);//a[0]是数组的第一个房间
p = a;
printf("%d\n",p[1]);//以上的三个输出又是相等的
return 0;
}
这里的代码反映出一件事情
p [1] <=> a[1] <=> a + 1 <=> p + 1
p [i] <=> a[i] <=> a + i <=> p + i =(1.2.3...n)
三、二维数组与行指针
一开始我只是简单的以为二维数组就只是用二维指针来调用就好了,但是我个人认为行指针性质上和二级指针没有差别,但是语法规范不一样,而且int a[2][3]输出应该是一个整数,你也不能用用它赋值一个指针变量。
#include<stdio.h>
int main()
{
int (*q)[3];//一个行指针
int * p;
int a[2][3] = {{1,2,3},{4,5,6}};
p = a[0];
printf("%d\n",p);//a[0]是数组的第一个房间
q = a;
printf("%d\n",q);//数组名a的地址
return 0;
}
这里的最后就涉及到了行指针,但是我们应该建立一个关于二维数组的思想,类似一个树形的关系
今天的内容就是这些了!