關於C語言的指標

2021-09-11 03:08:18 字數 2495 閱讀 6284

一級指標

指標是什麼?

在電腦科學中,指標(pointer)是程式語言中的乙個物件,利用位址,它的值直接指向(points to)存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為「指標」。意思是通過它能找到以它為位址的記憶體單元

指標:

指標是個變數,存放記憶體單元的位址(編號)。

指標就是位址, 利用這個位址可以找到指定的資料

指標就是位址, 那麼在使用的時候, 常常會簡單的說 指標變數為指標

指標變數就是儲存位址的變數

#include int main()

+ 指標的大小在32位平台是4個位元組,在64位平台是8個位元組二級指標

二級指標就是指向一級指標的指標(n 級指標就是 指向 n-1 級指標的 指標)

二級指標的記憶體布局二級指標是經常用到的,尤其與二維陣列在一起的時候更是令人迷糊。例如:

char **p;

定義了乙個二級指標變數 p。p 是乙個指標變數,毫無疑問在 32 位系統下佔 4 個 byte。

它與一級指標不同的是,一級指標儲存的是資料的位址,二級指標儲存的是一級指標的位址。

對於二級指標的運算有:

int b=20;

*ppa=&b; //等價於pa=&b

**ppa 先通過 *ppa 找到 pa ,然後對 pa 進行解引用操作: *pa ,那找到的是 a .

**ppa=30

//等價於*pa=30;

//等價於a=30;

指標和陣列

1.陣列名作為右值的時候,就是第乙個元素的位址。

int main()

; int*p_first = arr;

printf("%d\n",*p_first); //輸出1

return 0;

}

2.指向陣列元素的指標 支援 遞增 遞減 運算。(實質上所有指標都支援遞增遞減 運算 ,但只有在陣列中使用才是有意義的)

int main()

; int*p = arr;

for(;p!=arr+3;p++)

return 0;

}

3、p= p+1 意思是,讓p指向原來指向的記憶體塊的下乙個相鄰的相同型別的記憶體塊。

同乙個陣列中,元素的指標之間可以做減法運算,此時,指標之差等於下標之差。

4、p[n] == *(p+n)

p[n][m] == *( *(p+n)+ m )

5、當對陣列名使用sizeof時,返回的是整個陣列占用的記憶體位元組數。當把陣列名賦值給乙個指標後,再對指標使用sizeof運算子,返回的是指標的大小

這就是為什麼我麼將乙個陣列傳遞給乙個函式時,需要另外用乙個引數傳遞陣列元素個數的原因了。

int main()

; int*p = arr;

printf("sizeof(arr)=%d\n",sizeof(arr)); //sizeof(arr)=12

printf("sizeof(p)=%d\n",sizeof(p)); //sizeof(p)=4

return 0;

}

指標陣列

指標陣列是乙個存放指標的陣列。

int* arr1[10]; //整形指標的陣列

char *arr2[4]; //一級字元指標的陣列

char **arr3[5];//二級字元指標的陣列

陣列指標

能夠指向陣列的指標

定義 int (*p)[n];

()優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n。

&陣列名vs陣列名

#include int main()

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

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

return 0;

}

arr是陣列名,陣列名表示陣列首元素的位址

&arr 表示的是陣列的位址,而不是陣列首元素的位址。

陣列的位址+1,跳過整個陣列的大小,所以 &arr+1 相對於 &arr 的差值是40

關於C語言的指標

c語言指標 今天學習了指標,講講我對它的認識。這是乙個指標 int i int p scanf d i p i i是乙個整型變數,p是乙個指標,輸入時賦值給i,p是i的位址。就好比,i是房子的名字,p是房子的位址,輸入的值是放在房子裡的東西。符號 是取位址的意思,在這裡是對i取位址。定義指標的時候,...

關於C語言指標的理解

三者的區別 char s hello world char s hello world char s 5 這個相當於建立了乙個指標變數s,指標變數s指向常量 helloworld 指標變數s位於棧中,字串 hello world 位於常量區 相當於const char s hello world 所...

關於C語言中的指標

1 對於已定義的某個變數的讀取 通過該變數來訪問它的值 通過該變數的儲存位置讀取數值 指標 作業系統會將所有的記憶體單元進行編號。關於32位作業系統與64位作業系統支援的最大記憶體。計算機底層使用二進位制進行管理,所以32位作業系統支援2的32次方個編號,即4g的記憶體位址。int a 1 int ...