C語言指針操作

int numbers[5] = {1,2,3,4,5};


int *ptr1 = numbers; //numbers表示第一個元素的地址 

int *ptr2 = &numbers[0]; //把第一個元素的地址賦值給指針ptr2

int *ptr3 = numbers + 0;   //指針運算,對 numbers 做加減運算,是對地址的運算,數組(或指針)初始化爲什麼類型在運算是就遵循該類型的運算規則


在C語言中 numbers[1] 在編譯時會轉換成 *(numbers + 1),numbers 表示第一個數組元素的地址,經過指針運算,按照偏移量(numbers + 1)表示numbers偏移一個單位(int),numbers[1]表示的是第2個元素的值。


int numbers2[5] = {1,2,3,4,5};

numbers = numbers2;

numbers2 = numbers;

以上代碼會發生編譯錯誤。

數組名在使用時表現得像一個常指針,不能被指向另外一塊內存地址,但是我們可以改變指向該數組的指針變量。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章