| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 484 人关注过本帖
标题:关于指针的问题,向高手请教
只看楼主 加入收藏
lyv3kiki
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2010-4-11
结帖率:25%
收藏
已结贴  问题点数:10 回复次数:2 
关于指针的问题,向高手请教
为什么下段程序定义了max和min指针,用取p指针指向地址的值赋予max和min地址,为什么编译不过?  而改为把p的指针赋予min和max就可以通过运行?
#include<stdio.h>
void exchange(int *p,int n)
{
   
    int *max,*min;
    *max=*min=*p;
    printf("a=%db=%d\n",*max,*min);
}
main()
{
    int n,i,a[10];
    int *p;
    printf("您要输入数字的个数:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
     scanf("%d",&a[i]);
    exchange(a,n);
}

        scanf("%d",&a[i]);
    exchange(a,n);

}
搜索更多相关主题的帖子: 指针 
2010-04-21 18:45
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:3 
以下是引用lyv3kiki在2010-4-21 18:45:50的发言:

为什么下段程序定义了max和min指针,用取p指针指向地址的值赋予max和min地址,为什么编译不过?  而改为把p的指针赋予min和max就可以通过运行?
                                  因为max与min是函数中定义的指针变量,在函数调用结束后会自动销毁,p不能指向之。反之就可以。     
2010-04-21 20:33
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:7 
exchange 函数错了吧,*max 和 *min 的地址还未初始化,就把 *p 的值赋给他们?

max 和 min 是指针变量,未初始化时他们所指向的是一个未知域呀。

稍微修改了一下
程序代码:
#include<stdio.h>

void exchange(int *p,int n)
{
   
    int * max, * min;
    max = min = p;
    printf("a=%d  b=%d\n", *max, *min);
}

int main(void)
{
    int n, i, a[10];
   
    printf("您要输入数字的个数:");
    scanf("%d", &n);

    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }

    exchange(a,n);

    return 0;

}


另外,楼主代码最下方的:
        scanf("%d",&a[i]);
    exchange(a,n);

}

是啥东西?明细是多出来的吧。。。而且如果用户输入的数字大于10的话,程序依然会出错的哟。

[ 本帖最后由 lixnkei 于 2010-4-21 20:53 编辑 ]


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-04-21 20:47
快速回复:关于指针的问题,向高手请教
数据加载中...
 
   



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

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