看下面:void Swap(int *p1,int *p2) { int *p; p = p1; p1 = p2; p2
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/28 07:05:37
看下面:void Swap(int *p1,int *p2) { int *p; p = p1; p1 = p2; p2 = p; } 指针的用法错在哪?
定义里面的所有指针前加个*;
给你分析下,说到底指针也是个变量吧,既然是变量就逃不过一个宿命,就是直接传进函数的时候,在函数里调用的只是变量的一个副本.所以看程序,参数列表中的(int *p1,int *p2),p1,p2其实都是副本,在执行语句p = p1; p1 = p2; p2 = p; 后 p1,p2的指向地址是交换了,但是p1,p2是你真正想交换的指针吗?,回到main中那两个指针还是没变.至于为什么,你能写这个程序说明这点你是掌握了的.
那么为什么加*就可以了,这里的p1,p2不管是本体还是副本,都是指向你想交换的那个变量地址的,只要是指向了那个地址,就可以用*p1= 来进行赋值.
给你分析下,说到底指针也是个变量吧,既然是变量就逃不过一个宿命,就是直接传进函数的时候,在函数里调用的只是变量的一个副本.所以看程序,参数列表中的(int *p1,int *p2),p1,p2其实都是副本,在执行语句p = p1; p1 = p2; p2 = p; 后 p1,p2的指向地址是交换了,但是p1,p2是你真正想交换的指针吗?,回到main中那两个指针还是没变.至于为什么,你能写这个程序说明这点你是掌握了的.
那么为什么加*就可以了,这里的p1,p2不管是本体还是副本,都是指向你想交换的那个变量地址的,只要是指向了那个地址,就可以用*p1= 来进行赋值.
看下面:void Swap(int *p1,int *p2) { int *p; p = p1; p1 = p2; p2
#include void swap(int b[]) { int *p,*p1,*p2; p1=&b[0] ;p2=&
swap(int *p1,int *p2) {int temp; temp=*p1; *p1=*p2; *p2=temp
谁给讲解下其中的问题,函数如下swap(int *p1,int *p2) {int *p; p=p1; p1=p2; p
int*p,*p1,*p2,*p=*p1,*p1=*p2,*p2=*p3哪里有错.另外p=p1,p1=p2,p2=p3呢
下面一段代码:int a=1,b=2,t; int *p1,*p2; p1=&a;p2=&b; t=*p1;*p1=*p
C语言 int *p,*p1,*p2; int a=5,b=3; p1=&5; p2=&3; *p = *p1; //
int *p1,*p2; p1=(int *)malloc(10); p2=p1+2; printf("p1=0x%x,
void fun(char *w,int m) {char s,*p1,*p2;p1=w;p2=w+m-1;
main() { int a=1,b=3,c=5;int *p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2
main() { int x=10; int *p1=&x,*p2; p2=p1; printf("%d\n",*p2)
int *p1=malloc(4); int *p2=malloc(4); printf("p2-p1=%d\n",p2