为什么这个C指针代码不起作用?

为什么这个C指针代码不起作用?,第1张

概述在这里完成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; s 在这里完成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 %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指针代码不起作用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存