1樓:匿名使用者
在c中記憶體,可以劃分為三種,堆、棧和靜態儲存區。
棧就是auto變數存放區域,自動釋放,在編譯時候需要知道空間大小。
堆一般用作開闢動態儲存區,需要人工開闢,人工釋放,可以在執行是開闢。比如說c中的malloc和free函式,還有c++中的new和delete。
還有就是靜態儲存區,這個區域存放一些常量,不能改變值。
你說的char *pp = "welcomt to c";
*pp = "pp is changed";
這句話本身是錯的,首先字串不能那樣賦值。pp指向一個字元,而不是整個一行。
就算換成
*pp = 'p'也是不對的,因為
char *pp = "welcomt to c";
意思是在靜態儲存區放入"welcomt to c",然後在棧內開闢一個指標pp,指向這個字串。
也就是說pp在棧中,而其指向的字串在靜態儲存區中。所以能改變pp指向,但是不能改變其指向的值。
你想把c/c++學明白了,一定要讓記憶體在你心中透明。
2樓:匿名使用者
可以。int a=1;
int *p=&a;
*p=3;
cout<<*p<<" "<
這裡a和*p都為3; int b=2; p=&b; cout<<*p<<" "<
這裡改了p的地址,但a的值仍不變。 所以改物件的值只能修改指標所指物件的值,而不能通過修改指標的地址來改變一個物件的值 3樓: 行,比如 int* p = new int(0);//修改地址、賦初值*p = 1;//修改所指的物件的值 使用*號來修改 c++中的delete到底是清空什麼?是指標本身還是指標所指向的值? 4樓:匿名使用者 c++的delete要執行兩個步驟: 1 按照指標型別,呼叫該類的解構函式。 (這個是c的free沒有的功能)。 2 根據指標型別,釋放相應寬度的記憶體空間。(類似c的free)。 從這個題目來說,delete是是否指標所指向的物件。而不是釋放指標本身。 一般而言,delete p;以後最後跟一個 p=null;避免無效指標的二次訪問。 5樓:匿名使用者 主要是**記憶體,目的是為了告訴作業系統程式對這部分記憶體不在使用了 讓作業系統可以把這部分記憶體拿去做其它事情 6樓: 是清空記憶體,是指:指標指向的值的空間(記憶體),用於**記憶體 7樓:青檸 new 和 delete 是一組 new申請記憶體,delete釋放記憶體,記得將釋放的指標置為null 8樓:匿名使用者 指向的值,如果不用delete,指標本身沒了,但是所指向的空間沒有被釋放。 因為fence指向的是節點型別資料。一般連結串列的節點是如下型別 typedef struct 或class nodenode fence next就是取節點fence的資料項 next,就是該節點的後繼指標。fence fence next是給指標賦新值,指向原來結點的後繼。暈死,這是結構變數才有... 在宣告int pirand中 表示這個變數是int型別的指標 在宣告之外 可以理解成一個運算子 或者一個函式 和 是一對逆運算 的意思是讀一個變數的地址 比如你宣告瞭int a a是a的地址可能是xx1001之類的可以在除錯裡看一下 的意思是讀一個地址指向的內容 pirand pirand rand... 在宣告語句中的 是與前面的型別符號配合的,而不是與後面的變數名配合的,如int p 是宣告瞭一個int 型指標變數p,而不是一個int型變數 p 指標變數是p,所以後面賦值時不得再加 指標p並沒有賦值,是野指標,不能作右值。運算表示式中單獨的 基本就兩種情況 一是在指標前,它是取指標所指物件的值 二...c 連結串列中,fence fence next,指標fence next是什么意思
c語言中指標中的是什麼意思,C語言中,指標中的 是什麼意思
C 中指標裡面的怎麼用,在C 中,指標中, 符號有什麼用?應該怎麼用,謝謝了,我是初學者。