&表示 c++ 中的引用調用,==> 對參數的修改結果需要「帶回來時」 需要用到。
本質原因: 在 test 函數中,單純參數的 x(無&),開闢了一個新內存存放參數 x, 將主函數中 x(內存地址和test函數中的 x地址不同) 的值複製過去。 test 函數對x的操作都是對複製值後的新地址進行操作,與主存的x沒有關係。 一個是原件,一個是複印件,對複印件進行操作不影響原件。
在第二個函數中,參數類型爲引用類型,這就代表 &x 的x 不開闢新的地址,而是直接和主函數中的內存是同一個內存,所以在上面進行的操作,直接改變主函數 x。
拓展講解:
printf( " 調用test函數前 x=%d\n " ,x);
其實這裏的效果和 java 中打印輸出函數效果大致相同, System.out.print( " 調用test函數前 x= ", x) ;
不同點在於: c語言的 = 後多加了 %d\n , %d\n 的作用是格式化輸出(將要輸出的數據按照設置的格式要求輸出),
==> %d,表示結果只能輸出十進制整數,\n是換行符,表示輸出字符後換行。