初始化
int i=10;
int * a = &i;
int * a = NULL;(編譯沒問題,運行錯誤,指針所指向地址必須為合法有效的記憶體地址)
a = (int *)malloc(10*sizeof(int));
a = 1;
int * a =10;(錯誤寫法,給指針賦值必須為地址,*p為所指向變數的值)
int *a=&i;
int * c = a + 15;(a代表數組首地址,右側表達式表示地址向高位移動15位指針所指類型位元組即移動4*15位元組)
a的地址是10,c的地址是10+ 4*15,因為a的類型是int *,地址增長時加整型的長度。
字元型指針初始化
char str="ksjdkghdksf";
str是一個數組首地址
數組裡面的內容是一個字元串
char * pstr="aslgkjklahjkla";
pstr是指向字元串常量的首地址的指針,編譯器將字元串常量放在唯讀數據段.
注意,是唯讀數據段裡面的數據是不可更改的.