#include <stdio.h>
#include <conio.h>
int swap(int *pa,int *pb);
int main(void){
int a,b;
scanf("%d,%d",&a,&b);
printf("%d%10d\n",a,b);
swap(&a,&b);
printf("%d%10d\n",a,b);
getch();
}
int swap(int *pa,int *pb){
int swap;
swap=*pa;
*pa=*pb;
*pb=swap;
}
记得老师以前讲一个和这个相似的问题时说什么没有定义指针长度,请问上面的这个程序是不是没问题了,以后在写这类程序应该注意些什么问题呢。
还有个问题,在倒数第三行我要达到*pa=*pb;的效果写pa=pb为什么不可以呢。
请高手指教,谢谢。
----------------解决方案--------------------------------------------------------
请注意:
*pa=*pb是将指针pb所指的数赋给pa;
pa=pb是将指针pb的地址赋给pa。
----------------解决方案--------------------------------------------------------
请注意:
*pa=*pb是将指针pb所指的数赋给pa;
pa=pb是将指针pb的地址赋给pa。
真费解啊,不过有点明白了,谢谢
----------------解决方案--------------------------------------------------------
仔细在仔细的看看书,我相信你就会懂得!!
c语言不懂指针的话,很麻烦的!
----------------解决方案--------------------------------------------------------
int swap;
swap=*pa;swap 为整形,pa 为指针,怎么可以swap=p呢?
----------------解决方案--------------------------------------------------------
谢谢各位兄弟,俺差不多明白了
----------------解决方案--------------------------------------------------------
int swap;
swap=*pa;swap 为整形,pa 为指针,怎么可以swap=p呢?
你说的啥意思?pa是指针,*pa就代表pa指向的整形变量阿,当然可以赋给swap了。。。
----------------解决方案--------------------------------------------------------
在倒数第三行我要达到*pa=*pb;的效果写pa=pb为什么不可以呢。
主要回答这句话!
楼上的,如果写成PA=PB
那么swap就应该是个指针吧
----------------解决方案--------------------------------------------------------
1.你要是改成pa=pb的话,就是把pb的地址赋给pa,swap=*pa;*pa=*pb;那麽接着这句*pb=swap;是把原pa指向的值赋给pb,但注意此时pa和pb的地址是相同的(都是原pa的值),所以返回的a,b值不就相同了吗?就达不到交换的目的了。。。
----------------解决方案--------------------------------------------------------
楼上的,如果写成PA=PB
那么swap就应该是个指针吧
但即使改成这样也是不对的
#include <stdio.h>
#include <conio.h>
int swap(int *pa,int *pb);
int main(void){
int a,b;
scanf("%d,%d",&a,&b);
printf("%d%10d\n",a,b);
swap(&a,&b);
printf("%d%10d\n",a,b);
getch();
}
int swap(int *pa,int *pb){
int *swap;
swap=pa;
pa=pb;
pb=swap;
}
因为函数调用时,参数的传递是值传递,调用swap时,只是将a,b的地址传给了pa,pb,虽然在函数内部,pa,pb的值做了交换,但并没有使a,b的地址交换,所以这样调用后还是没有起到值交换的作用
----------------解决方案--------------------------------------------------------