〃忝書γě渎ぐ 发表于 2019-9-14 16:51:27

指针交换两个数,这样写为什么会出错?

#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 16:51:28

本帖最后由 superbe 于 2019-9-14 19:20 编辑

例如这样,就不会出错了。也就是把 i 的地址给temp.

    int i;
    int *temp;
    temp=&i;
    *temp = *u;
    *u = *v;
    *v = *temp;

人造人 发表于 2019-9-14 17:48:35

#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 17:49:09

swap函数有问题

void swap(int* u,int* v)
{
    int temp;
    temp = *u;
    *u = *v;
    *v = temp;
}

〃忝書γě渎ぐ 发表于 2019-9-14 19:02:16

人造人 发表于 2019-9-14 17:48


我知道这样写,但是像我上面那样写,为什么会报错呢?

〃忝書γě渎ぐ 发表于 2019-9-14 19:05:28

superbe 发表于 2019-9-14 17:49
swap函数有问题

那为什么我上面那么写会报错呢,我知道上面的代码会报错呢?

superbe 发表于 2019-9-14 19:12:38

本帖最后由 superbe 于 2019-9-15 16:11 编辑

你代码里temp是一个指针,但没有初始化,也就是説它的值(是一个地址)是未知的,而这句却要给它指向的内存赋值*temp = *u;
页: [1]
查看完整版本: 指针交换两个数,这样写为什么会出错?