先來看一下例子:
#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;
}
輸出結果爲: