程序如下:
#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;
}
编译和链接的时候没有出错,但是有警告,运行之后出现如下错误:
于是回过头来检查,发现程序确实没有什么问题
直到晚上睡觉的时候拿起谭浩强那本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
文章评论(0条评论)
登录后参与讨论