c語言指標學習總結

2021-09-21 17:13:30 字數 3081 閱讀 9469

在指標 int *p或char *p,中*p是內容,p是指標,呼叫`*p`時候類似間接定址

先看個簡單 指標實驗:在linux上gcc編譯執行

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

#include

intmain()

linux上對應結果為

&i:0x7fff851b2e90

&p:0x7fff851b2e98

p:0x7fff851b2e90

*p:118

&k:0x7fff851b2e94

k:118

&i:0x7fff851b2e90 

&s:0x7fff851b2ea0

s:0x7fff851b2e90

*s:118

/*從上面兩部分結果可以看出記憶體組織如下:(從綠色字型可以看出)從記憶體0x7fff851b2e90 處開始4個byte存放int變數i,接下來4個byte存放int變數k;(從上面黑色加粗字型)從0x7fff851b2e98開始的8個byte開始int指標變數p的值,而這個值對應的記憶體單元在使用*p取值時只會取4個byte。呼叫i時候類似直接定址,呼叫`*p`時候類似間接定址。*/

s:ch:dfdf

p:ch:0x40098f

s:cha:dfdf

p:cha:0x40098f

p:*cha:d

s:chi:fffd

p:chi:0x4009c5

p:*chi:f

p:chi:i

p:*chi:i love china

p:chi:i

p:*chi:i fove china

總結

一、*p 是p所在值得內容,使用值、用內容;?=*p

p是位址,賦值用位址;p=?

int *p 是8位byte;int 是4位bite

char*p 是4位bite; char 是2位bite      

int *p,*q;

int a = 4;

p = &a;//直接賦值(賦位址);

*p = 4;//(間接賦值)

*p 相當於 a; *p = 4;相當於 a = 4;

q = p;//直接賦值(賦位址);    

char *p = "i lova china";//間接賦值(位址)

char *q;

q = p;直接賦值(賦位址):

二、下面賦值錯誤:資料型別不一樣

int *p = 9;

p = 8;//如果正確應該是p=(int*)8;

p是位址;賦值用位址

char *p;

*p = "i love china";  //錯誤

下面正確

char *p = "i love china";

p = "i love china";

三、int i = 9;

int *p;

p = &i;(直接賦值,賦位址)

int a;

int *p;

p = &a;(同上)

p = (int *)0x56000056;(這句在arm嵌入式學習中用到,在計算機中並不合法)

p = ox10 <==> a = 0x100; <==> (*(int *) 0x56000056) = 0x100;

四、陣列中

string[4] 等同於 *(string + 4)

所以下面正確

一、char a = "i love china";

char *array;

array = &a[0];//array = &a[0];//array = a[0];//array = a;

*(array + 2) = 'f';

C語言指標學習總結

一 概念 二 舉例說明 首先是指標的定義 int p p是乙個整型變數。int p p是乙個指標變數,指向整型變數。int p p是乙個陣列,陣列裡儲存的是指向整型變數的指標 int p p是乙個指標,指向整型陣列的首位址。int p p是乙個函式,返回值是整型指標 int p p是乙個指標,指向乙...

C語言指標學習總結

上學的時候學習c語言,最煩的就是裡面指標,可是指標也恰恰是c語言的靈魂。最近在重溫資料結構的內容,因為大多資料結構的教材都是用c語言描述的,而資料結構中也大量的用到了指標的內容,所以我就在這篇筆記中記錄一下我這週複習c語言的心得。先看看百科上對指標的描述。在電腦科學中,指標 pointer 是程式語...

學習C語言的指標總結

感謝 非凡程式設計師的黃楊超老師的耐心講解 概論 這一點思考是我從為什麼很多看起來不是很複雜的 比如 facebook 需要大量頂尖高手來開發?這個答案中想到的,正如這位答主所說 事實上,從我的經驗來看,一般來說,很多軟體專案及產品,其在非功能性需求上的成本,難度和工作量,是要超過功能性需求的。在特...