为什么这个C指针代码不起作用?
发布时间:2020-12-16 10:54:52 所属栏目:百科 来源:网络整理
导读:在这里完成C newb.试图通过弄乱简单的代码片段来学习/理解指针. #include stdio.hvoid 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 %dn",*a,*b);} 为什么这无效?当我从m
在这里完成C newb.试图通过弄乱简单的代码片段来学习/理解指针.
#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 %dn",*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 %dn",a,b); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |