先上乙個讓我昨天晚上崩潰了一晚上的題
#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 值傳遞 指標傳遞 引用傳遞詳解
值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作.引...