在前面的部落格裡,我們已經學過了指標陣列。
指標陣列是乙個存放指標的陣列。
自行複習哦。。。。
陣列指標的定義:
陣列指標是陣列? 還是指標?
答案:指標。
我們已經熟悉:整型指標:int pint;能夠指向整型資料的指標。浮點型指標:floatpf;能夠指向浮點型資料的指標。
那麼陣列指標應該是:能夠指向陣列的指標。
下面**哪個是陣列指標?
int *p1[10];
int (*p2)[10];
//p1,p2分別是什麼?
解釋:
int (*p)[10];
//解釋::p先和*結合,說明p是乙個指標變數,
然後指著指向的是乙個大小為10個整型的陣列。
所以p是乙個指標,指 向乙個陣列,叫陣列指標
//這裡要注意:的優先順序要高於*號的,所以必須加上()來保證p先和*結合。
對於下面的陣列:
int arr[10];
arr 和 &arr分別是啥?
我們知道arr是陣列名,陣列名代表首元素的位址。
那麼&arr陣列名代表啥?
我們來看一段**:
由執行結果看得出陣列名和&陣列名列印的位址是一樣的。
那麼兩個真的是一樣的嗎?
我們繼續看一段**:
根據上面的**,我們發現&arr和arr,雖然值是一樣的,但是意義是不一樣的。
陣列的位址+1,跳過整個陣列的大小,所以 &arr+1 相對於 &arr 的差值40。
那陣列指標是怎麼使用的呢?
既然陣列指標指向的是陣列,那陣列指標存放的應該是陣列的位址。
讓我們看乙個陣列指標的使用:
#include#includevoid print_arr1(int arr[3][5], int row, int col)
printf("\n"); }}
void print_arr2(int(*arr)[5], int row, int col)
printf("\n"); }}
int main()
; print_arr1(arr, 3, 5);
//陣列名arr,表示首元素的位址
//但是二維陣列首元素是二維陣列的第一行
//所以這裡傳遞的arr,其實相當於第一行的位址,是一維陣列的位址
//可以用陣列指標接受
print_arr2(arr, 3, 5);
system("pause");
return 0;
}
學習了指標陣列和陣列指標讓我們看一下下面的**是什麼意思?
int arr[5];//指標陣列(整型陣列)
int *parr1[10];//陣列指標parr1和先結合,parr1是乙個陣列,有十個元素,每個元素是乙個整形指標int*
int (*parr2)[10];//:p先和*結合,說明p是乙個指標變數,然後指著指向的是乙個大小為10個整型的陣列。所以p是乙個指標,指向乙個陣列,叫陣列指標。
int(*parr3[10])[5];//是乙個陣列 ,裡面存10個陣列指標 乙個指標指向乙個整型陣列 整型陣列裡有5個整型
陣列,指標,指標陣列,陣列指標
指標是在32位系統下佔四個位元組,64位系統下佔八個位元組的一種型別,指標指向的內容可以是常量,變數,函式,結構體,指標本身,陣列,等等.一級指標 一級指標常常在函式傳參時使用,可傳的引數有一維陣列,常量指標,函式指標等等都可以 但我們要注意不要在函式中,通過改變形參的指向來達到改變實參指向的效果,...
指標, 指標的指標, 陣列, 指標陣列, 陣列指標
指標 int a 10 int p a 指標的指標 int b 20 int p b int p2p p 簡單陣列 int c 10 整數陣列,含有10個整數元素 也就是說每乙個元素都是整數 指標陣列 int p 10 指標陣列,含有10個指標元素 也就是說每乙個元素都是指標 陣列指標 int p ...
指標,陣列指標,指標陣列
1.指標 指標可以看成乙個變數,指標所佔記憶體的大小和處理器的定址空間大小有關,32位處理器指標大小為4個位元組,64位處理指標大小為8個位元組。int p 定義乙個int型別的指標,p就可以看成乙個變數,p的值為0,表示p指向0位址 p也是占用記憶體的,編譯器在棧上為p分配記憶體,儲存p的值0,0...