1. 程式人生 > >C語言學習——指標與陣列、空指標

C語言學習——指標與陣列、空指標

指標與陣列

陣列的元素在記憶體中是互連的,通過指標運算元組某個元素

方法1

int vals[4]={1,2,3,4};
int* p=vals;
/*p指向陣列的記憶體地址,即第一個元素的地址*/
printf(“%d”,*p);
/*輸出p地址的值*/
p+=1;
/* p向後移動一個記憶體地址*/
printf(“%d”,*p);
/*輸出當前p地址的值*/
printf(“%d”,*(vals+2));
/*直接輸出陣列第三個元素記憶體地址的值*/

/*賦值*/
*p=5;
/* 給當前p地址賦值*/

注:陣列名即是一個記憶體地址,等同於第一個元素的地址。*後面如果跟記憶體地址,即可以獲得該記憶體地址的值

方法2

int vals[4]={1,2,3,4};
int* p=vals;
printf(“%d”,p[0]);
printf(“%d”,p[1]);
/*賦值*/
p[0]=5;
/* 給p[0]的地址賦值*/

注:當一個指標指向陣列時,這個指標也是一個數組,p[0]即所指向陣列的第一個元素的值,同樣也不能出界。

小案例

int vals[4]={1,2,3,4};
for(int* p=vals;p<vals+4;p++){
        printf("%d\n",*p);
    }

空指標

例如int* p=0; p就是一個空指標

判斷是否為空指標

if(p){
  ...
}