重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
是的,不能,你的理解是对的。
专注于为中小企业提供成都网站建设、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业仁寿免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
指针传递可以改变其指向地址的内容,但不能改变原指针的指向。
如果需要改变指向,需要使用指向指针的指针作为参数。
#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);
}
试试这个是不是你想要的
值传递在函数调用过程中,函数内部将参数拷贝一份,而并不改变元参数的值。而指针传递,才在函数内部改变传入参数的值。如果你要传入的参数是指针,可以改变的是指针指向的具体内容的值,而你如果要在函数内部改变指针的值,你需要传入的是指针的地址,也就是指针的指针。将你的Change函数的参数改为(int **p, int **q), 然后再调用的时候改为change(p, q)即可。
希望对你又帮助。
可以定义这样的一个函数,不过参数类型不是一维指针,而是二维指针:
//---------------------------------------------------------------------------
#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); //输出现在指向的地址保存的值
printf("%d",*move(p)); //移动指针指向,并输出移动后指向的地址保存的值
return 0;
}
//---------------------------------------------------------------------------