C語言中對乙個指標賦值和對該指標的位址重新賦值的區別?

時間 2021-06-19 07:58:55

1樓:任衛

因為C語言是絕對的值傳遞。也正是這樣,為了更有效率地傳遞大資料塊才發明的指標,就是傳遞資料的位址值,沒有違反值傳遞。C++的引用傳遞才是對值傳遞的違反,C語言沒有引用。

引數列表和返回值的東西都是複製來複製去的,都是副本,修改了函式形參本身的值就只在函式內有效。

2樓:暮無井見鈴

stack_push 函式傳入 top 引數,是為了修改 top 所指向的物件(即 *top),而 top 這個物件本身不必修改。

top = &node; 意思是「改變 top 指標物件,令其指向 node 物件」。(取 node 物件的位址,賦值給 top 指標物件)

*top = node; 意思是「改變 top 指標值所指的物件,賦值其為 node 的值」(對 top 指標值定址,將該址的物件以 node 的值賦值)

話說你這個判 NULL 是不是有點問題。就算 *top == NULL , else 裡寫的東西也照樣有效。

反而需要解引用的 top 和 node 沒有判 NULL 。

c語言中為什麼一維陣列名可以賦值給乙個普通的指標,二維陣列名卻不可以賦值給乙個指向指標的指標?

yihonge 可以,不過有編譯 警告罷了。警告是在提示你可能存在潛在問題,而不是不能這樣做,你完全可以強制轉換。編譯器行為罷了,就像char s hello 其實字串常量應該是const char 但是C編譯器偏偏沒有警告,C 編譯器就會有警告,因為C 的型別檢查比C嚴格。至於為什麼有警告 拋個問...

請問,c語言中的一句和一行兩個概念相同嗎。

一般來說語句是按照分號或者一對大括號來辨識的。在你這裡一句只是個文字遊戲。而程式設計不是咬文嚼字,所以你可以隨便改。如果老師說或者答案書上說你錯了。你就聽老師的。對於語句的瞭解你可以看這裡 https en.cppreference.com w c language statements State...

在哪些語言中, 吃 和 喝 是同乙個詞?

無論是漢語還是日語中,吃有些時候都可以表示喝。漢語中固然有吃煙 吃茶 吃酒的說法,其實日語裡也有,應該是從漢語中傳過去的 吃煙 吃茶 吃酒 博乙隻肖 對於這個問題我想說在廣西用我們的家鄉話和方言來說的話這 吃 和 喝 都是同樣的發音和說法。 壯哉我賈詡文和 莆仙話,字為食,音同 呷 呷麻 吃飯,呷皿...