| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 588 人关注过本帖
标题:指向函数的指针变量问题
只看楼主 加入收藏
yanshuili
Rank: 2
来 自:揭阳
等 级:论坛游民
帖 子:22
专家分:10
注 册:2011-3-28
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:6 
指向函数的指针变量问题
#include<stdio.h>

void output(struct person *p)
{
    printf("%s %c %f %d",p->name,p->sex,p->height,p->age);
}
void main()
{
    struct person
    {
        char name[8];
        char sex;
        float height;
        int age;
    }per[3]={{"liming",'M',175,20},
             {"xiaohong",'M',180,19},
             {"limin",'F',160,21}};

    struct person *p;
    for(p=per;p<per+3;p++)
        printf("%-18s,%3c,%4d,%7.1f\n",per->name,per->sex,per->height,per->age);
    printf("**********************************");
    output(*p);
}


大侠看下:output函数下面我不知道怎么指向,我知道现在p是指向per了,而后面的是为空的!怎么纠正这个错误?
搜索更多相关主题的帖子: include person 
2011-12-21 10:30
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:4 
回复 楼主 yanshuili
调用output函数前的for循环执行后,p指向哪里?你好好想想

总有那身价贱的人给作业贴回复完整的代码
2011-12-21 10:44
jia393741127
Rank: 2
等 级:论坛游民
帖 子:16
专家分:29
注 册:2011-12-20
收藏
得分:4 
#include<stdio.h>
struct person
    {
        char name[9];
        char sex;
        float height;
        int age;
    }per[3]={{"liming",'M',175,20},
             {"xiaohong",'M',180,19},
             {"limin",'F',160,21}};
void output(struct person *p)
{
    printf("%s %c %f %d",p->name,p->sex,p->height,p->age);
}
void main()
{
    struct person *p;
    for(p=per;p<per+3;p++)
        printf("%-18s,%3c,%4d,%7.1f\n",per->name,per->sex,per->height,per->age);
    printf("**********************************");
    p=per;
    output(p);
}


感想 你这个程序 错误不是一般的多啊。。
2011-12-21 12:46
jia393741127
Rank: 2
等 级:论坛游民
帖 子:16
专家分:29
注 册:2011-12-20
收藏
得分:0 
结构体一般 在最前面 或者建立头文件。 你要用某个东西,如果前面没有 则一定要先声明。或者将这个函数写在后面。代码都是从上往下的,切记切记!用指针 初学者最好在本子上画下它的指向,别凭感觉。
2011-12-21 12:49
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
收藏
得分:4 
回复 4楼 jia393741127
我也喜欢在字上画圈圈..然后慢慢推.. 我姐一看到这样就笑笑笑 不过绝对上是一个好用的方法!!
2011-12-21 18:35
xuxiong517
Rank: 2
等 级:论坛游民
帖 子:35
专家分:29
注 册:2011-11-1
收藏
得分:4 
三楼的好像不对啊,你运行没??
2011-12-21 20:16
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:4 
回复 楼主 yanshuili
#include<stdio.h>

struct person
    {
        char name[8];
        char sex;
        float height;
        int age;
    }per[3]={{"liming",'M',175,20},
             {"xiaohong",'M',180,19},
             {"limin",'F',160,21}};

void output(struct person *p);

void main( )
{
    struct person *p;
    for(p=per;p<per+3;p++)
        printf("%-18s,%3c,%4d,%7.1f\n",p->name,p->sex,p->height,p->age);
    printf("**********************************\n");
    output(p);
}

void output(struct person *p)
{
    printf("%s %c %f %d",p->name,p->sex,p->height,p->age);
}
结构体移到头部,子函数移到尾部,主函数之前先声明子函数,主函数中是p指针在循环所以把per改成p,
调用output() 子函数需要的是地址入口,所以 *p 改成 p.


[ 本帖最后由 有容就大 于 2011-12-21 21:06 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2011-12-21 21:04
快速回复:指向函数的指针变量问题
数据加载中...
 
   



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

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