關於指標和陣列

2021-09-26 08:12:49 字數 1051 閱讀 5805

指標也是一種變數,不過他是專門用來存放某一塊記憶體的有且只有乙個的位址的,即類似於門牌號的一串數字。

在32位/64位平台下指標的大小是固定的4/8個位元組。

指標也有型別,其型別決定了指標的+-整數的長度是多少位元組,還決定了指標解引用時操作的許可權。

int main()
這裡的int*型別的變數p就是乙個一級指標,其解引用內容為p所存位址下的那一塊記憶體的內容。

int main()
這裡的int** 型別的變數q就是乙個二級指標,他所存內容是一級指標p在記憶體中的位址,因為是變數就會在記憶體中開闢一段空間,所以p是擁有位址的,二級指標解引用需要用兩個**,這樣就可以訪問到一級指標所存位址下的內容了。

其實這兩者本沒有聯絡,只是在c語言中看似稍微有那麼點聯絡。

int main();

printf("%d\n",arr);

printf("%d\n", &arr);

printf("%d\n", arr+1);

printf("%d\n", &arr+1);

return 0;

}

這裡的輸出結果為:

10157816

10157816

10157820

10157832

解釋一下:arr表示該陣列首元素的位址,而&arr表示乙個陣列指標,也就是乙個指向整個陣列的指標,用其首元素所在位址表示,當進行+1操作時,arr+1表示該陣列名隱式轉換成的指標向後移動int個長度,即乙個元素的大小,指向該陣列的第二個元素,&arr+1表示該指標陣列,也是乙個指標,不過他向後移動了該陣列的整個的長度。,即16個位元組。

首先他是乙個陣列,而這個陣列裡存放的是指標型別的元素。

int *arr[10]  的優先順序最高,先與arr結合,則arr是乙個陣列,而int*是陣列裡元素的型別。

首先他是乙個指標,這個指標指向乙個陣列。

int(*p)[10]    ()的優先順序最高,所以p是乙個指標型別,而該指標指向乙個擁有十個元素,每個元素都是int型別的陣列。

關於指標陣列和陣列指標

陣列指標 舉例說明 int p 5 陣列指標的英文是 a pointer to an array 也就是指向陣列的指標。通過int p 5 p 是宣告,宣告p是乙個指標,它指向的內容是int 5 這個陣列。簡單運用下 int a 5 int p 5 a 這裡的意思也就是a是個五位的陣列,而p指向陣列...

關於「指標陣列」和」陣列指標「

我一直弄不清楚 指標陣列 和 陣列指標 的區別,最近這段時間看到了一些關於陣列和指標的關聯和區別的資料,然後總結了下這兩個概念的區別,以備後續檢視。1 區分指標陣列和陣列指標 short ptr 10 指標陣列,可理解為 存放指標的陣列 short ptr1 10 陣列指標,可理解為 指向陣列的指標...

關於指標和陣列

1.指標陣列 形如int arr 10 的型別,指標陣列可以簡單理解為存放指標變數的陣列。2.陣列指標 形如int arr 10 的型別,陣列指標可以簡單理解為指向陣列的指標。就上面所介紹的兩種型別來看,有一種較為簡單的記憶方法,看 和誰先和arr接觸,若是先和 接觸,即為陣列指標,若是先和接觸,即...