C學習 指標

2021-06-18 07:43:13 字數 928 閱讀 8830

1、指標

a)   

int a;

表示乙個記憶體空間,這個空間用來存放乙個整數(

int);

b) int* a;

表示乙個記憶體空間,這個空間用來存放乙個指標,這個指標指向乙個存放整數的空間,即

a)中提到的空間;

c) int** a;

表示乙個記憶體空間,這個空間用來存放乙個指標,這個指標指向乙個存放指標的空間,並且指向的這個空間中的指標,指向乙個整數。也簡單的說,指向了乙個

b)中提到的空間;

d) int (*a)[10];

表示乙個記憶體空間,這個空間用來存放乙個指標,這個指標指向乙個長度為

10、型別為

int的陣列;和

int** a

的區別在於,++、

+=1之後的結果不一樣,其他用法基本相同。

以上四種型別見上圖表示。

e) int (*a)(int);

表示乙個記憶體空間,這個空間用來存放乙個指標,這個指標指向乙個函式,這個函式有乙個型別為

int的引數,並且函式的返回型別也是

int。

最近看到有人問到這樣的問題"陣列名能否自加問題",最後我經過驗證得出了個結論,不可以,假設有乙個整形陣列int a[4] 如果出現a++表示式,則是一種錯誤的表示式,但是可以是a+1,所以推出了乙個想法就是位址不可以自加,但是可以通過加幾來完成,對陣列中其他元素的遍歷,也就是說必須有個"+"號這樣才可以實現對陣列名也就是位址的運算,如果沒有加號則就是錯誤的.當給出乙個指標時,int p;p=a;p++;這樣的運算就是正確的,指標是一種可移動的東西,因此可以進行自加,自加有和p+1是一樣的效果,所以由此推出:

不管是什麼型別的位址都沒有自加,只能通過"+"(這就相當於是位址的移動了)幾來實現位址的轉移,而指標可以進行自加,效果和"+"幾是一樣的.

C 指標學習

一 指標的概念 如果在程式中定義乙個變數,在編譯時系統會自動給這個變數分配記憶體單元,並根據程式中的定義的變數型別,分配一定長度的記憶體空間,這樣的記憶體單元裡放著變數的值。為了便於記憶體單元的訪問,系統為每乙個記憶體單元分配乙個位址。在變數的生存期內,不管以後對變數如何賦值,其記憶體位址都是固定不...

C 學習 指標

關於二級指標的學習遇到了一些困惑,也有了一些不知是否正確的結論。在文章中留個底以記錄學習過程。author 以下是一些暫時的結論 1.將每個變數名都理解成位址 2.注意區分堆與棧中的變數 3.表示取左值 根據位址跳轉 表示取位址 宣告時表示建立乙個引用 ex.char string aaa char...

C 指標學習

1.指標即位址,指標型別的變數前面要加 是取變數的位址 int a,b int p1,p2 a 100 b 10 p1 a p2 b cout p1 p2 include using namespace std c 中引用傳遞的兩種方式 和 引用方式更加簡潔,直觀 函式的引數型別是指標型別,將變數的...