關(guān)于函數(shù)內(nèi)部定義指針并進(jìn)行操作的一個(gè)疑問
int?change(int*a,int*b) {???? int?*c=a;??? ?*a=*b;???? ?*b=*c;???? ?return?0; ?} int?main(int?argc,char**argv) {//1???? int?a?=5;???? int?b?=6;???? change(&a,&b);???? printf("a'=%d\nb'=%d\n",a,b); return?0; ????}
在函數(shù)內(nèi)部定義一個(gè)指針c,把指針a指向的值賦給c,再把它傳遞給b,為什么調(diào)用函數(shù)后結(jié)果b'還是6?
int?change(int*a,int*b) {???? int?c=a*;???? *a=*b;???? *b=c;???? return?0; }
對(duì)比正確寫法,我可以理解這是把c=5直接賦值給b,但是上面的寫法為什么不對(duì)呢?望大神賜教,謝謝!
2023-08-23
int *c; //指針變量
指針變量只指向內(nèi)存的標(biāo)簽,本質(zhì) *c 就是 a,無論名字還是內(nèi)存(值)都是一樣的
2023-03-26
2022-06-29
正確寫法中“a*”更正為“*a”,不影響提問,謝謝