指针交换两个数,这样写为什么会出错?
#include <stdio.h>#include<stdlib.h>
void swap(int* u,int* v)
{
int* temp;
*temp = *u;
*u = *v;
*v = *temp;
}
int main()
{
int x = 5,y = 10;
printf("x=%d y=%d\n",x,y);
swap(&x,&y);
printf("x=%d y=%d\n",x,y);
return 0;
} 本帖最后由 superbe 于 2019-9-14 19:20 编辑
例如这样,就不会出错了。也就是把 i 的地址给temp.
int i;
int *temp;
temp=&i;
*temp = *u;
*u = *v;
*v = *temp; #include <stdio.h>
#include<stdlib.h>
void swap(int* u,int* v)
{
int temp;
temp = *u;
*u = *v;
*v = temp;
}
int main()
{
int x = 5,y = 10;
printf("x=%d y=%d\n",x,y);
swap(&x,&y);
printf("x=%d y=%d\n",x,y);
return 0;
}
swap函数有问题
void swap(int* u,int* v)
{
int temp;
temp = *u;
*u = *v;
*v = temp;
}
人造人 发表于 2019-9-14 17:48
我知道这样写,但是像我上面那样写,为什么会报错呢? superbe 发表于 2019-9-14 17:49
swap函数有问题
那为什么我上面那么写会报错呢,我知道上面的代码会报错呢? 本帖最后由 superbe 于 2019-9-15 16:11 编辑
你代码里temp是一个指针,但没有初始化,也就是説它的值(是一个地址)是未知的,而这句却要给它指向的内存赋值*temp = *u;
页:
[1]