标题:指针基础问题
取消只看楼主
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
结帖率:100%
已结贴  问题点数:20 回复次数:9 
指针基础问题
#include <stdio.h>


/*
   本意是想通过swap函数,交换两个指针变量存放的两个变量的地址,但目测该函数完全无效
*/
void swap( int *pointer_1, int *pointer_2)
{
    int *p;

    p = pointer_1;   
    pointer_1 = pointer_2;
    pointer_2 = p;
}

int main(void)
{
    int i;
    int j;
    int *pointer_max;
    int *pointer_min;

    scanf("%d",&i);
    scanf("%d",&j);

    pointer_max = &i;
    pointer_min = &j;
   
    if(i < j)
        swap(pointer_max, pointer_min);

    printf("max = %d , min = %d\n", *pointer_max,*pointer_min);
        

    return 0;
}

刚接触指针这一块,自己写了一个小程序,运行发现了有很大问题,但编译器并不报错、

具体如上所述,经过查资料,感觉问题是因为swap函数中定义的 int *变量 p,并没有一个确定值,导致p指向的单元不可预见

但还是不是十分明白,可以请高手详细讲解一下吗
搜索更多相关主题的帖子: void include 
2012-08-13 11:42
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
得分:0 
回复 2楼 TonyDeng
额 。。。
我的意思是,其实就是交换两个指针变量存放的内容。

404 NOT FOUND
2012-08-13 11:47
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
得分:0 
回复 2楼 TonyDeng
我的意思是初始情况下 pointer_max是指向变量i的,如果发现 i < j 则使pointer_max指向j,pointer_min指向i、

这样描述没问题吧,大神

404 NOT FOUND
2012-08-13 11:50
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
得分:0 
void swap( int *pointer_1, int *pointer_2)
{
    int p;

    p = *pointer_1;   
    *pointer_1 = *pointer_2;
    *pointer_2 = p;
}

将swap函数如上改写后,问题排除,然后感觉更加疑惑

404 NOT FOUND
2012-08-13 11:51
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
得分:0 
回复 5楼 TonyDeng
其实是这样的,我的要求是保持i,j的值不发生改变,同时保证pointer_max指向较大的,pointer_min指向较小的.


404 NOT FOUND
2012-08-13 11:53
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
得分:0 
回复 7楼 TonyDeng
问题的关键不在这里、

关键不是如何达到最终的目的,我最关心的问题其实是开始的swap函数为什么为出错、

因为本身这本来也没有什么现实意义


404 NOT FOUND
2012-08-13 11:56
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
得分:0 
回复 9楼 TonyDeng
我错了,大神。

404 NOT FOUND
2012-08-13 11:57
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
得分:0 
回复 13楼 TonyDeng
我的目的就是想弄清为什么会出错啊、亲

好吧,不好意思,浪费您时间啦

404 NOT FOUND
2012-08-13 11:59
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
得分:0 
回复 15楼 TonyDeng
恩,你说的很有道理、但这并不是我所需要的答案,我还是自己琢磨一下、

404 NOT FOUND
2012-08-13 12:03
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
得分:0 
回复 22楼 有容就大
感谢,虽然已经找到了问题所在,你的说法更好理解吧

404 NOT FOUND
2012-08-13 14:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-376354-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.140402 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved