#include <stdio.h>voID swap(int *px,int *py){ int tmp; tmp = *px; *px = *py; *py = tmp;}main(){ int *a,*b; *a = 1; *b = 2; swap(&a,&b); printf("%d %d\n",*a,*b);}
为什么这无效?当我从main中删除解除引用运算符*时,代码有效.
从概念上讲,这似乎应该有效.我将a和b初始化为指针,分别指向int 1和int 2.然后我将他们的地址发送到swap(),它应该切换他们指向的地址.
解决方法 有几个问题.首先,指针a和b没有指向有效的内存.因此,未定义整数值的赋值(可能崩溃).其次,调用swap(假设a和b指向有效内存)不应该包含地址(它当前正在发送指针变量的地址).以下更改将使其工作:
int a,b;a = 1;b = 2;swap(&a,&b);printf("%d %d\n",a,b);总结
以上是内存溢出为你收集整理的为什么这个C指针代码不起作用?全部内容,希望文章能够帮你解决为什么这个C指针代码不起作用?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)