c語言 關於指標的那些事兒

2021-08-29 23:49:52 字數 1474 閱讀 6305

1、指標的實質

指標的本質上就是乙個位址,指標就比別的多了乙個解引用,即*可間接訪問他人。

2、關於指標的操作

int a=10;

int b=20;

int *p=&a;

*p=100; //a=100&a,表示獲取a的位址(指標)

p=&b;//p=2000

*p=200;//b=200,*p 表示解引用

int **pp=&p;

*pp=&a;//p=&a

**pp=1000;a=1000

*pp=&b;//p=&b

**pp=2000; //b=2000

3.指標賦值型別不同不可以賦值,指標賦值一定要嚴格相等

char a=『x』; char *p1=&a;

short b=10; short *p2=&b;

int c=20; int *p3=&c; int *p4=&p3;

1、指標++的三種情況

第一種:加乙個位元組

第二種:加乙個格仔(4個位元組)

第三種:加乙個陣列

那麼到底是屬於哪種情況呢,我們來做以下分析:

輸入一段**

#includeint main()

; int *p=arr;

p++;

*p=10;

printf("%d %d\n",arr[0],arr[1]);

return 0;

}

1、如果是第三種情況加乙個陣列,p++就直接加到了本陣列結束位置,但是本操作是對陣列內部資料的操作,所以這種推測錯誤。

2、如果是第一種情況,加乙個位元組,由於乙個指標佔4個位元組。那麼如下圖所示,把有色方框放大得到。

十進位制 1 轉成十六進製制為 ox1 ox00000001

同理2 轉成十六進製制為 ox2 ox00000002

101 轉成十六進製制為 oxa ox0000000a

因為pc為小端(低位址放小資料),所以將圖中每乙個位址賦值為,如圖所示(賦值用黑色標記寫在圖下方)

進行了p++操作後的值如圖所示(賦值用紅色標記寫在圖中)

所以arr[1]=ox000000a010=2561!=10

3、綜上所述:指標++是指的是加乙個格仔(四個位元組)

2、指標運算的總結

3、例題

指標加法

int main()

指標減法

int main()

C語言那些事兒

專案名稱 蘇嵌實訓 嵌入式linuxc第3天 今日進度以及任務 學習了c語言的基本知識 本日任務完成情況 掌握了c語言的基本知識 本日開發 現的問題彙總 c語言中的細節問題要注意 本日未解決的問題 無本日開發收穫 進一步熟悉了c語言其他無 c語言1 c語言之父?丹尼斯里奇 2 c的特點 優勢 語言標...

指標那些事兒

1.野指標 也叫懸擺指標,迷失指標 野指標是導致bug的罪魁禍首之一。對指標呼叫delete後 釋放掉了它指向的記憶體,野指標還是指向原來的位址 如果沒有重新賦值就使用它,將導致難以預料的後果。因為此時操作野指標,它指向的記憶體位址可能已經分配給其他變數在使用了。所以指標在delete之後,如果不再...

c 關於ctime那些事兒

c 的標準庫沒用給具體時間日期的函式,而是用了c中的時間日期的函式,比如說之前提到的那個c 隨機點名軟體,就用到了ctime中的隨機數種子。include include using namespace std intmain tm是格式化時間的操作,我們看到的大多數時間函式,都會用到tm結構,下面...