原创 一个简单的C语言程序涉及的指针问题

2009-11-29 09:49 2234 7 7 分类: MCU/ 嵌入式

程序如下:


#include<stdio.h>
void main()
{
 void change(int *m,int *n);
 int a,b;
 int *i,*j;
 a=3;
 b=2;


 i=&a;
 j=&b;
 change(i,j);
 printf("%d,%d",a,b);
}
void change(int *m,int *n)
{
 int *temp;
 *temp = *m;
 *m = *n;
 *n = temp;


}


编译和链接的时候没有出错,但是有警告,运行之后出现如下错误:


d5739e36-a997-4c2a-8c47-757482f0b518.jpg


于是回过头来检查,发现程序确实没有什么问题


直到晚上睡觉的时候拿起谭浩强那本C语言的教材来看的时候才发现上面提到过这个问题,出错的原因是在函数change()中定义了temp指针,但是并没有对其进行赋值,这使得temp可能指向内存中一些比较重要的空间,这些空间是只读的,所以才会出现上图中的错误,


改正的方法是:将int *temp; 改为int temp; 直接将其定义为整型变量即可。


下面附上我的程序包,大家可以试试:


https://static.assets-stash.eet-china.com/album/old-resources/2009/11/29/5f5eb062-5018-4be2-8e7d-500478794a52.rar

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条