1樓:匿名使用者
代入變數和值的作用域不一樣,也就是,如果通過變數代入,此時不會改變變數的值。如果通過指標(引數)的形式代入,則會可以改變指標指向的變數的值,但是地址不可以改變。如果想改變地址呢,就得用雙指標,或者說第二層地址代入。
2樓:匿名使用者
這個理解起來其實很簡單
只要記住一點,實參和形參不在一個記憶體地址中就可以,改變形參不會改變實參的
但是有一個例外,就是在宣告子函式是,引數帶&,這表示實參形參公用一個記憶體地址
在呼叫x1函式時,i j會另外申請記憶體地址,那麼交換了ij,但是ab所在的記憶體地址的內容是不會改變的
呼叫x2時,傳遞過去的是ab的記憶體地址,並且在子函式中,交換了ab記憶體地址中的內容,那麼ab就交換了
這個主意兩點
1,交換了ab記憶體地址(也就是指標)中的內容,但是你看在子函式中,指標是沒有交換的,所以說傳遞過去的引數是沒有改變,只是改變了指向的地址中的內容
2,要是在子函式中宣告的c是指標,如果用c=i;i=j;j=c,那麼只是交換了指標,而指標指向的內容還是沒有改變,並且在主函式中,這兩個引數指標還是沒有改變。道理同第一個,因為實參和形參是佔不同的記憶體地址,
3樓:匿名使用者
x1是實參的值賦值給形參,實參值並沒有改變。
x2定義的指標,為了處理大量資料,指標是直接操作實參本身(注意:不是賦值實參的值)。
參考:c.primer.plus(第五版)中文版.pdf 函式體
4樓:匿名使用者
那個,這是常識吧。幾乎所有的c語言書籍都會把這個做為標準案例來演示
第一個僅傳遞副本,就是傳值
第二個是傳遞地址。
5樓:瞳影丿
呼叫第一個函式的過程為 值傳遞
c語言的指標問題,C語言的指標問題
printf c p 3 分佈來看,c是要列印輸出一個字元。p指向那個字元陣列,p就是字元 a 那麼 a 3是多少呢,a 1是b 2 是c 3 是d注意是 p 3 而不是 p 3 這是由區別的。是的。p 3。是對p指向的那個值加3,p開始是指向a的,故a加3後就是d了 而p 執行3次的話,是指標p本...
C語言指標問題,求教大神C語言指標的問題搞不懂求大神指教
include include include include include static char chongpai char static int pare const void const void static int allocateintegerarr const char size ...
c語言指標的賦值問題C語言指標的賦值問題
指標在用要注意初始化,例如 int p p為指標,地址是未知的,如果直接賦值 p a 這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要資料,所以避免這種危險,在定義指標時注意初始化,也就是賦值。可以int p a 或者int p p a 然後再...