指標型別決定了指標如何參與運算
1,指標參與運算時,因為指標變數本身儲存的數值是表示位址的,所以運算也就是位址的運算。
2,指標參與運算的特點是,指標變數加1並不是真的加1,而是加1*sizeof(指標型別);如果是int *指標,則加1實際上就是表示位址+4(位址+sizeof(int)),如果是char *指標,則+1表示位址+1(位址+sizeof(char));
3,指標變數+1時實際不是+1而是加1xsizeof(指標型別),主要原因是希望指標+1剛好指向下乙個元素,而不希望錯位。
#includeint main(void);printf(
"a = 0x%x \n
",a);
printf(
"&a[0] = 0x%x \n
",&a[0
]); printf(
"&a = 0x%x \n
",&a);
p = a+1
; printf(
"*p = %d \n
",*(p-1
)); //1
p = &a[0] + 1
; //&a[0]的型別是 int (*) 表示的是陣列首元素的大小
printf(
"*p = %d \n
",*(p-1
)); // 1
p = &a + 1; //&a的型別是 int (*) 表示的是整個陣列的大小
printf(
"*p = %d \n
",*(p-1
)); // 5
return0;
}
《C語言筆記 指標相關(一)》
一,野指標問題 1,什麼是野指標?野指標就是指標指向了乙個不可知的位置 隨機的 不正確的 限制訪問的 2,會造成什麼危害?第一種情況,指向乙個不可訪問的位址 比如核心空間 會觸發段錯誤,這種算是最好的情況。第二種情況,指向乙個可用的但是沒有什麼特別意義的空間 比如說曾經使用過但已經不用了的棧空間或堆...
《C語言筆記 指標相關(一)》
一,野指標問題 1,什麼是野指標?野指標就是指標指向了乙個不可知的位置 隨機的 不正確的 限制訪問的 2,會造成什麼危害?第一種情況,指向乙個不可訪問的位址 比如核心空間 會觸發段錯誤,這種算是最好的情況。第二種情況,指向乙個可用的但是沒有什麼特別意義的空間 比如說曾經使用過但已經不用了的棧空間或堆...
c語言指標學習筆記(二)
6.指標和多維陣列 就拿陣列int array 5 2 舉例 array 是乙個占用兩個int大小物件的位址 array 0 是乙個占用乙個int大小物件的位址 故此,可以理解給array 1和array 0 1不同之處 畢竟,乙個代表著兩個int單位,乙個則代表著乙個 array是位址的位址,必須...