c語言有感 指標傳遞之值傳遞vs位址傳遞

2021-09-19 08:25:44 字數 577 閱讀 2086

先上乙個讓我昨天晚上崩潰了一晚上的題

#include #includetypedef struct

stu;

void f(stu *a)

, *d = &c;

a = d; //*a=*b /*就是這個,蒼天啊,*/

printf("%s,%c,%d,", a->name, a->gender, a->score);

}int main(void)

; f(&a);

printf("%s,%c,%d\n", a.name, a.gender, a.score);

system("pause");

return 0;

}

這個其實非常簡單的指標運算,哎。。。糊塗了

我的疑問是:同是位址傳遞,為什麼乙個傳回來的變了,乙個並沒有變化

經過我的測試後發現,位址之間的變化是把位址裡儲存的內容相互交換了,

stu c = , *d = &c;

a = d; //*a=*b

*d=&c 相當於,d=&c,然後又把a的位址給換了,相當於拷貝

按值傳遞 vs 按指標傳遞

變數賦值有兩種方式 按值傳遞 按 指標 傳遞 指標也常稱為 引用 不同的程式語言賦值的方式不一樣,例如python是按 指標 傳遞的,go是按值傳遞的。注意,指標 加了引號,因為它不是真正的按指標拷貝,見下文分析。引數傳值其實也是變數賦值的過程,只不過引數是函式的本地變數而已。按值傳遞的意思是每次賦...

c 值傳遞 指標傳遞 引用傳遞

值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作 引...

C 值傳遞 指標傳遞 引用傳遞詳解

值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作.引...