我寫了一個程序,其中一個函數採用兩個指針作爲參數,並且該函數改變了指針的地址,所以當我在主函數中調用指針的值時,它顯示的是舊的值。傳遞指針在C中的功能
代碼: -
#include <stdio.h>
void sample(int *d, int *m);
int main(){
int day=12,month=3;
int *d,*m;
d = &day;
m = &month;
printf("Day = %d \t MOnth = %d\n",*d,*m);
sample(d,m);
printf("Day = %d \t Month = %d\n",*d,*m);
}
void sample(int *d, int *m){
int month = 1;
int day = 30;
m = &month;
d = &day;
}
基於答案的計算器我甚至稱使用sample(&d,&m)
的功能,但同樣did'nt工作,同樣的問題。
我甚至嘗試定義的功能等: -
void sample(int *d,int *m){
int month = 1;
int day = 30;
*m = month;
*d = day;
}
但程序崩潰。
你的第二個版本應該工作...如果它墜毀,我估計還會發生其他事情。 – vu1p3n0x
您正在設置函數指針參數的本地副本,以指向函數中的局部變量。這不會改變'main()'中的任何內容。你可以寫(在示例函數中)'* d = 30; * m = 1;'(或'* d =日; * m =月;')。 –