C 中可以通過指標來修改他所指的物件的值嗎

時間 2021-06-25 14:45:00

1樓:潘正啊狗

在c中記憶體,可以劃分為三種,堆、棧和靜態儲存區。棧就是auto變數存放區域,自動釋放,在編譯時候需要知道空間大小。堆一般用作開闢動態儲存區,需要人工開闢,人工釋放,可以在執行是開闢。

比如說c中的malloc和free函式,還有c++中的new和delete。還有就是靜態儲存區,這個區域存放一些常量,不能改變值。你說的char*pp=welcomttoc;*pp=ppischanged;這句話本身是錯的,首先字串不能那樣賦值。

pp指向一個字元,而不是整個一行。就算換成*pp='p'也是不對的,因為char*pp=welcomttoc;意思是在靜態儲存區放入welcomttoc,然後在棧內開闢一個指標pp,指向這個字串。也就是說pp在棧中,而其指向的字串在靜態儲存區中。

所以能改變pp指向,但是不能改變其指向的值。你想把c/c++學明白了,一定要讓記憶體在你心中透明。

2樓:項豫飛令婧

可以。int

a=1;

int*p=&a;

*p=3;

cout<<*p<<"

"<

這裡a和*p都為3;

intb=2;

p=&b;

cout<<*p<<"

"<

這裡改了p的地址,但a的值仍不變。

所以改物件的值只能修改指標所指物件的值,而不能通過修改指標的地址來改變一個物件的值

c++ 中關於指標操作,修改指標變數的值和修改指標所指物件的值,他們的區別在哪?

3樓:小劍子

int *p; //定義指標變數p

int a=1,b=2;

p=&a; //指標變數p指向a,p的值為a的地址p=&b; //修改指標變數p的值,p的值為b的地址*p=3; //修改指標變數p所指向的物件的值,b=3

4樓:匿名使用者

一個只是修改指標的指向,一個是修改指標指向物件的值,這樣說,你滴明白?

C 中可以通過指標來修改他所指的物件的值嗎

在c中記憶體,可以劃分為三種,堆 棧和靜態儲存區。棧就是auto變數存放區域,自動釋放,在編譯時候需要知道空間大小。堆一般用作開闢動態儲存區,需要人工開闢,人工釋放,可以在執行是開闢。比如說c中的malloc和free函式,還有c 中的new和delete。還有就是靜態儲存區,這個區域存放一些常量,...

C如何通過textbox修改dataGridView中的值單擊button並儲存到資料庫中

沒看明白什麼意思,如果你是想通過textbox的輸入改變datagridview的顯示,那麼你可以雙擊textbox,在出現的textbox1 textchanged裡加個根據textbox的值查詢資料庫再重新繫結datagridview即可,如果是web記得textbox 加個autopostba...

C語言高手來,關於指標

這要看語義了。從這裡理解,p應該是個指標。第乙個表示p所指的物件中儲存的是變數m的位址,第二個則表示p中所存的是變數m的位址。是個取位址符,乙個變數加了 之後表示得到了這個變數的位址。指標究竟是什麼呢?按我的理解,指標也是一種特殊的變數型別,就如int char一樣,只不過這個變數 乙個指標,設為a...