| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 411 人关注过本帖
标题:【求助】请高手指点这段代码有误逻辑错误
只看楼主 加入收藏
李建国
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2010-8-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
【求助】请高手指点这段代码有误逻辑错误
请高手指点这段代码有误逻辑错误:
# include <stdio.h>
# include <string.h>

struct People
{
    int age;
    char color;
    char name[50];
};

void inPut(struct People *);
void outPut(struct People *);

int main(void)
{
    struct People * p;

    inPut(p);
    outPut(p);

    printf("%d\n",(*p).age);

    return 0;
}

void inPut(struct People * pe)
{
    pe->age = 12;
    pe->color = 'b';
    strcpy(pe->name,"奥多姆");
}

void outPut(struct People * pe)
{
    printf("%d %c %s\n",pe->age,pe->color,pe->name);
}


/*
总结:该程序在VC6.0中运行时报错
*/
搜索更多相关主题的帖子: 奥多姆 return 
2011-04-09 17:00
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:20 
给你改好了,自己好好研究下

#include <stdio.h>
#include <string.h>
#include <stdlib.h>//<---------调用malloc函数用的头文件

struct People
{
    int age;
    char color;
    char name[50];
};

void inPut(struct People **);// <------注意形参用指向指针的指针
void outPut(struct People *);

int main(void)
{
    struct People * p;

    inPut(&p);       //<--注意
    outPut(p);
    printf("%d\n",p->age);//<------结构指针调用成员应该这样写
    free(p);
    return 0;
}

void inPut(struct People ** pe)//<--注意
{
    *pe = (struct People *)malloc(sizeof(struct People));//<---------给*pe开辟动态空间,好赋值
    (*pe)->age = 12;                                      //<--注意
    (*pe)->color = 'b';                                   //<--注意
    strcpy((*pe)->name,"奥多姆");
}

void outPut(struct People * pe)
{
    printf("%d %c %s\n",pe->age,pe->color,pe->name);
}

我的地盘
2011-04-09 17:50
李建国
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2010-8-18
收藏
得分:0 
回复 2楼 hnuhsg1226
谢谢,我自己也找到了一个修改方法,一起研究一下:# include <stdio.h>
# include <string.h>

struct People
{
    int age;
    char color;
    char name[50];
};

void inPut(struct People *);
void outPut(struct People *);

int main(void)
{
    struct People p;
    //若声明为:struct People * p;必须要对P初始化赋值
   
    inPut(&p);
    outPut(&p);

    return 0;
}

void inPut(struct People * pe)
{
    pe->age = 12;
    pe->color = 'b';
    strcpy(pe->name,"奥多姆");
}

void outPut(struct People * pe)
{
    printf("%d %c %s\n",pe->age,pe->color,pe->name);
}
2011-04-09 20:31
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:0 
这是形参和实参的区别,你后面改的跟我的意思是一样的,函数调用的是实参的地址,所以实参值就改变了

我的地盘
2011-04-09 21:22
快速回复:【求助】请高手指点这段代码有误逻辑错误
数据加载中...
 
   



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

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