| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 952 人关注过本帖
标题:指针基础问题
只看楼主 加入收藏
雨落北川
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
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
关键是你不知道如何直接了当地达到自己的目的。让别人继续跟你说吧,我说完了,不啰嗦。

授人以渔,不授人以鱼。
2012-08-13 11:58
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
收藏
得分:0 
回复 13楼 TonyDeng
我的目的就是想弄清为什么会出错啊、亲

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

404 NOT FOUND
2012-08-13 11:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
玩绕口令当然容易出错啦,不过没谁愿意去了解绕口令为什么要那样绕啊,我可不愿费神去想你那个函数为什么会错,因为根本不需要那样的东西。

授人以渔,不授人以鱼。
2012-08-13 12:00
dsl975708035
Rank: 3Rank: 3
来 自:平凉
等 级:论坛游侠
帖 子:101
专家分:152
注 册:2012-8-3
收藏
得分:10 
程序代码:
#include <stdio.h>

void swap(int*, int*);

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;
}

void swap(int* pointer_1, int* pointer_2)
{
    int p;
    p = *pointer_1;//将pointer1指向的变量的值赋给p
    *pointer_1 = *pointer_2;//将pointer2指向的变量的值赋给pointer1指向的变量
    *pointer_2 = p;//将p的值赋给pointer2指向的变量
}

自己好好琢磨琢磨

[ 本帖最后由 dsl975708035 于 2012-8-13 12:04 编辑 ]

唉,初三要停停了,舍不得啊。。
2012-08-13 12:01
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
收藏
得分:0 
回复 15楼 TonyDeng
恩,你说的很有道理、但这并不是我所需要的答案,我还是自己琢磨一下、

404 NOT FOUND
2012-08-13 12:03
dsl975708035
Rank: 3Rank: 3
来 自:平凉
等 级:论坛游侠
帖 子:101
专家分:152
注 册:2012-8-3
收藏
得分:0 
#include <stdio.h>


/*
   本意是想通过swap函数,交换两个指针变量存放的两个变量的地址,但目测该函数完全无效
*/
void swap( int *pointer_1, int *pointer_2)
{
    int* p;
    p = pointer_1;
    printf("p=%p,p1=%p\n",p,pointer_1);
    pointer_1 = pointer_2;
    printf("p1=%p,p2=%p\n",pointer_1,pointer_2);
    pointer_2 = p;
    printf("p2=%p,p=%p\n",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("pmax = %p , pmin = %p\n", pointer_max,pointer_min);
    return 0;
}
这段代码监视pmax和pmin的值,果然没变化,想想是为什么

唉,初三要停停了,舍不得啊。。
2012-08-13 12:21
dsl975708035
Rank: 3Rank: 3
来 自:平凉
等 级:论坛游侠
帖 子:101
专家分:152
注 册:2012-8-3
收藏
得分:0 
可能与作用域的问题有关,看这段代码,把swap()函数里德代码等效的写在if里就ok
程序代码:
#include <stdio.h>

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)
    {
        int* p;
        p = pointer_max;
        printf("p=%p,pointer_max=%p\n",p,pointer_max);
        pointer_max = pointer_min;
        printf("pointer_max=%p,pointer_min=%p\n",pointer_max,pointer_min);
        pointer_min = p;
        printf("pointer_min=%p,p=%p\n",pointer_min,p);
        printf("pointer_max=%p,pointer_min=%p\n",pointer_max,pointer_min);
    }
    printf("pmax = %p , pmin = %p\n", pointer_max,pointer_min);
    printf("max=%d,min=%d",*pointer_max,*pointer_min);
    return 0;
}


[ 本帖最后由 dsl975708035 于 2012-8-13 12:36 编辑 ]

唉,初三要停停了,舍不得啊。。
2012-08-13 12:35
dsl975708035
Rank: 3Rank: 3
来 自:平凉
等 级:论坛游侠
帖 子:101
专家分:152
注 册:2012-8-3
收藏
得分:0 
各位大神们也说说话呀,

唉,初三要停停了,舍不得啊。。
2012-08-13 12:44
快速回复:指针基础问题
数据加载中...
 
   



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

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