先来看一下例子:
#include<cstdio>
int main(){
int * p;
int * q;
int a[5];//一个int类型是4个字节,一个字节是8位
//一个字节是一个地址,即一个int类型的变量是占4个地址
a[0] = 4;
a[1] = 5;
p = a;//把数组首地址传给指针变量p
q = a+1;//把数组中第二个数的地址传给指针变量q
printf("数组第一个数的地址是:%p\n",p);
printf("数组第二个数的地址是:%p",q);
return 0;
}
上面例子的输出是:
通过分析上面的例子,需要记住的有三点:
①一个字节是一个地址
②一个字节是8位
③一个指针变量存放的只是变量的首地址
同时需要注意的是:所有的指针变量都只占4个字节!!!
大家如果不信的话可以通过下面的程序来验证一下:
#include<cstdio>
int main(){
double * p[3];
double i[3] ={4,1,0};
double ** m;//m存储的是指针变量p[0]的地址
double ** n;//n存储的是指针变量p[1]的地址
p[0] = &i[0];
p[1] = &i[1];
m = &p[0];
n = &p[1];
printf("%p\n",m);
printf("%p\n",n);
return 0;
}
输出结果为: