1 認識c指標

2022-06-19 15:57:08 字數 1861 閱讀 7669

1.指標和記憶體

c程式在編譯後,會以三種形式使用記憶體

1靜態/全域性記憶體

靜態宣告的變數分配在這裡,全域性變數也使用這部分記憶體。這些變數在程式開始執行時分配,直到程式終止時才會消失

2.自動記憶體

這些變數在函式內部宣告,並且在函式呼叫時才被建立。他們的作用域侷限於函式內部,而且生命週期限制在函式的執行時間內。

3.動態記憶體

記憶體分配在堆上,可以根據需要釋放,而且直到釋放才會消失。指標引用分配的記憶體,作用域限與引用記憶體的指標。

如何閱讀指標說明

1

const

int *ptr;

2#**解讀31

.ptr 是有個變數42

.ptr 是乙個指標變數53

.ptr是乙個指向整型的指標變數

64.ptr是乙個指向常數常亮的指標變數

用間接引用操作符(*)接引指標

1

int num = 5;2

int *ptr = #

3 printf("

%d\n

",*ptr);

4 #指標的接引 *ptr

我們也可以把接引操作符的結果用作左值。術語左值是指賦值操作符左邊的運算元,所有左值都必須可以修改,因為他們會被賦值。

null的概念

任何時候都不能對null指標進行接引,因為它並不包含合法位址

0的含義可能隨著**的不同而含義不同

1

int num = 9; 2

int *ptr = 0

;#此時的0為null

3 *ptr - 0;#此時的0為常數0

指標操作符

*                   用來宣告指標

*                   用來解引指標

->                 指向指標

+                  用於指標做加法

-                   用於指標做減法

==  !=          比較兩個指標

> < >= <=    比較兩個指標

1

int vector =

2int * ptr =vector;

3 printf("

%d\n

",*ptr);

4#輸出的值為1

5 ptr += 1

;6 printf("

%d\n

",*ptr);

7 ptr += 1

;8 printf("

%d\n

",*ptr);

9#輸出的值為1

10 ptr += 1

;11 #輸出的值為1

每次的指標加一,位址就加4

指標做減法

1

int vector = ;

2int *ptr = vectoe + 2

;3 printf("

%d\n

",*ptr);

4#列印出的值是7;

5 ptr --;

6 printf("

%d\n

",*ptr);

7 #列印出的值是41;

ptr的每次減一,位址都會向前移動四個位元組

指標相減

兩個指標相減會的到兩個指標的位址上的差值,可以判斷陣列中的元素順序。

c 指標的認識

1 如何判斷指標型別?從語法的角度看,你只要把指標宣告語句裡的指標名字去掉,剩下的部分就是這個指標的型別。這是指標本身所具有的型別。讓我們看看例一中各個指標的型別 1 int ptr 指標的型別是int 2 char ptr 指標的型別是char 3 int ptr 指標的型別是int 4 int ...

c語言中認識指標

位址和變數的概念 指標作用 1 表示複雜的資料結果 eg 鍊錶 樹 2 能動態分配記憶體 3 方便的使用字串 4 有效而方便使用字串 5 有效而方便的使用陣列 呼叫函式的時候能夠獲得1 個以上的結果。6 能夠直接處理單元位址等 總結 可以看到可以很直接的接觸到計算機的硬體的內容進行操作。1 資料的儲...

認識C語言指標(一)

說到指標,就會出現一些複雜型別,如果對這些複雜型別不太了解,在用到指標有時就會比較懵。乙個型別裡面會有很多運算子,其優先順序和運算優先順序一樣,只需要遵循乙個原則 從變數名處起,根據運算子優先順序結合,一步一步分析 先來看看簡單的型別 int p 這是乙個普通的整型變數 int p 先從p處開始,先...