今天看到一個比較有趣的題目,如下代碼,分析輸出結果
#include <stdio.h>
void num(int &b) { b = 222; return; } int main() { int y = 3; num(y); printf("y = %d\n", y); return 0; }
起初我認為,在C語言中,這樣的操作時改變了y的地址,但是它的值並沒有改變,所以執行main函數后,y的值不變,還是3
經過測試之后發現,這樣的代碼編譯都無法通過,突然恍然大悟,這是c++中的引用,很久沒有用c++,居然連這都忘記了。。。
切入主題,編譯這個代碼,會出現這樣的錯誤:error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
其實在C語言中是不存在引用的,也就是說C語言中&表示的不是引用,而是取地址符。所以編譯器出現的錯誤提示表明&在這里不能這樣用,如何解決這個問題呢?
1、常規的解決方法:用指針來取代引用,在主函數中傳進來地址;
2、將代碼擴展名保存成.cpp文件