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結構,下面...