指標和記憶體講解

2021-09-10 05:59:23 字數 1173 閱讀 2258

//指標賦值,如果沒有明確的位址可以賦值為null,int *p=null;null位址為0x0.

判斷指標位址是否為零位址if§ /如果p非空,則完成/

if(!p) /如果p空,則完成/

指標的算術運算:

p++;指標的加法是位址的加

*p是位址記憶體的資料

char *up=「asdfghjkl」;

*up=up[0] 是第乙個位址內的值 *up=「a」;

***************************

char *p;

p=「adsadsadas」;

p就是字串

******************

char *p;

*p=「dadadad」;

這種方法存在問題,*p不能賦值字串

!!!但是

char p=「fasfdfadsf」;存在

p就是字串

*****************************

賦值字串到p 最好用函式strcpy;

遞增指標:只對p進行加加運算,就是位址的移位,因此輸出字串陣列時,需要while(*p)來判斷字串是否結束;

堆疊malloc的使用方法

#include

int main()

//訪問空間

p[0]=1;

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

//釋放空間

free§;//不可使free(p[0]);

p=null;//函式中,該行**後面還有沒有執行語句

return 0;

//函式退棧時p自動消亡,但是堆記憶體沒有釋放}下午

細節講述:3開頭堆空間,**區4開頭,棧空間1開頭

malloc和free一一對應,按照呼叫次數

calloc和malloc差不多。

calloc

void calloc (size_t num,size_t size);//104

申請一大塊記憶體,並會把記憶體清零

void free(void *memeblock);

//輸入行數,和每行1的個數來顯示(用陣列)

#include

int main()

}printf(「結束\n」);

scanf("%d",&j);

}

指標和記憶體

開始寫部落格了,技術書籍讀了一些,可看完就忘,每次遇到問題都是 感覺在哪見過之後從新找,受夠了這種低效而又愚蠢的學習方法,看到有很多大牛都在部落格上記錄技術鄙人向之學習,本著開源精神共享技術。一 指標和記憶體 程式被編譯後要在記憶體中執行,不同的資料有不同的使用記憶體的方法,c語言程式有三種 1 靜...

C 和記憶體指標

雖然到了.net 的runtime 時代,c 仍然是不可磨滅的主要支柱,包括在msdn 裡見到的api 大部都是有指標型別存在,那麼在以c 冠首的c 裡應當如何去使用指標呢?其實,c 裡可以直接使用結構型的變數引用進api,但是畢竟它不是指標在對一些涉及以結構陣列存放的記憶體區操作可能就力有不及了,...

C 和記憶體指標

c 和記憶體指標 關 鍵 詞 serverword.net 雖然到了.net 的runtime 時代,c 仍然是不可磨滅的主要支柱,包括在msdn 裡見到的api 大部都是有指標型別存在,那麼在以c 冠首的c 裡應當如何去使用指標呢?其實,c 裡可以直接使用結構型的變數引用進api,但是畢竟它不是指...