第8周:指針與字符串——8.1 指針

1.運(yùn)算符 &?

scanf("%d",&i); printf("%x",&i); printf("0x%x",&i); printf("%p",&i);

獲得變量的地址,它的操作數(shù)必須是變量。地址的大小是否與 int 相同取決于編譯器。

不能對(duì)沒有地址的變量取地址。&(a+b) &(a++) &(++a)

相鄰變量的地址,自頂向下分配內(nèi)存(stack),緊挨著存儲(chǔ),后定義變量地址更低。

為什么 int i; scanf("%d",i); 編譯器沒有報(bào)錯(cuò)?

整數(shù)和地址一樣大,對(duì)于 scanf 沒有看出區(qū)別,運(yùn)行出錯(cuò),把讀進(jìn)來的數(shù)字寫到了不該寫的地方。


2.指針

就是保存地址的變量。

int i; int* p = &i; ?

int* p,q; ?int *p,q; ? p 是指針,q 為 int 類型變量。

變量的值是內(nèi)存地址。普通變量的值是實(shí)際的值,指針變量的值是具有實(shí)際值的變量的地址。


3.作為參數(shù)的指針

void f(int *p);

在被調(diào)用的時(shí)候得到了某個(gè)變量的地址: int i=0; f(&i);

在函數(shù)里面可以通過這個(gè)指針訪問外面的 i 。*p 代表 i ,可修改 i 。


4.運(yùn)算符*

* 是一個(gè)單目運(yùn)算符,用來訪問指針的值所表示的地址上的變量??梢宰鲇抑狄部梢宰鲎笾怠?/p>

int k = *p; *p = k+1;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容