是的,不能,你的理解是對的。
專注于為中小企業(yè)提供成都網(wǎng)站建設、做網(wǎng)站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)仁壽免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
指針傳遞可以改變其指向地址的內(nèi)容,但不能改變原指針的指向。
如果需要改變指向,需要使用指向指針的指針作為參數(shù)。
#include?stdio.h
void?swap1(int?*p1,int?*p2){
int?*p;
*p=*p1;
*p1=*p2;
*p2=*p;
}
void?main(){
int?a,b;
int?*p1,*p2;
scanf("%d%d",a,b);
p1=a;
p2=b;
printf("p1=%d,p2=%d\n",p1,p2); ?
swap1(p1,p2);
printf("a=%d,b=%d\n",a,b);
printf("p1=%d,p2=%d\n",p1,p2);
}
試試這個是不是你想要的
值傳遞在函數(shù)調(diào)用過程中,函數(shù)內(nèi)部將參數(shù)拷貝一份,而并不改變元參數(shù)的值。而指針傳遞,才在函數(shù)內(nèi)部改變傳入?yún)?shù)的值。如果你要傳入的參數(shù)是指針,可以改變的是指針指向的具體內(nèi)容的值,而你如果要在函數(shù)內(nèi)部改變指針的值,你需要傳入的是指針的地址,也就是指針的指針。將你的Change函數(shù)的參數(shù)改為(int **p, int **q), 然后再調(diào)用的時候改為change(p, q)即可。
希望對你又幫助。
可以定義這樣的一個函數(shù),不過參數(shù)類型不是一維指針,而是二維指針:
//---------------------------------------------------------------------------
#include stdio.h
int *move(int **p) //修改整形指針p的指向,使它指向相鄰的下一個int存儲地址,并返回這個新的地址
{
*p+=1;
return *p;
}
int main(void)
{
int a[]={1,2,3,4,5};
int *p=a; //定義一個整形指針,并指向a[0]
printf("%d\n",*p); //輸出現(xiàn)在指向的地址保存的值
printf("%d",*move(p)); //移動指針指向,并輸出移動后指向的地址保存的值
return 0;
}
//---------------------------------------------------------------------------