课外天地 李树青学习天地清心茶舍 → 关于结构体的第二次课件


  共有16789人关注过本帖树形打印复制链接

主题:关于结构体的第二次课件

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1940 积分:26616 威望:0 精华:34 注册:2003/12/30 16:34:32
关于结构体的第二次课件  发帖心情 Post By:2008/12/4 6:29:30 [只看该作者]

1 最为简单的使用方法
#include <string.h>
#include <stdio.h>

struct student{
        long num;
        char name[20];
        char sex;
        float score;
};

void main()
{
        struct student stu1={1001,"黎明",'M',78.5};
        struct student *p;
        p=&stu1;
        printf("学号是%d,姓名是%s,性别是%c,分数是%f\n",p->num,p->name,p->sex,p->score);
}

数组指针的回顾
#include <string.h>
#include <stdio.h>

void main()
{
        int i=1;
        int *p1=&i;
        //printf("i=%d\n",*p1);

        int array[3]={100,200,300};
        int *p2=array;
        //printf("array[1]=%d\n",*(p2+1));
        //printf("array[1]=%d\n",p2[1]);
        //printf("array[1]=%d\n",*(array+1));  
}

指向结构体数组的指针
#include <string.h>
#include <stdio.h>

struct student{
        long num;
        char name[20];
        char sex;
        float score;
};

void main()
{
        struct student stus[]={{1001,"黎明",'M',78.5},{1002,"胡哥",'M',90},{1003,"白雪",'F',81.5}};
        struct student * p1=stus;
        //printf("stus[1]的姓名是%s\n",stus[1].name);
        //printf("stus[1]的姓名是%s\n",(*(p1+1)).name);
        //printf("stus[1]的姓名是%s\n",p1[1].name);
        //printf("stus[1]的姓名是%s\n",stus[1].name);
}

2 使用结构体参数的函数
回顾函数参数的使用
#include <string.h>
#include <stdio.h>

void func(int);

void main()
{
        int i=0;
        func(i);
        printf("i=%d\n",i);
}

void func(int i)
{
        i=1;
}

回顾指针函数参数的使用
#include <string.h>
#include <stdio.h>

void func(int *);

void main()
{
        int i=0;
        int *p=&i;
        func(p);
        printf("i=%d\n",i);
}

void func(int * p)
{
        *p=1;
}

数组参数类似于指针参数
#include <string.h>
#include <stdio.h>

void func(int *);

void main()
{
        int i[]={0,0,0};
        int *p=i;
        func(p);
        printf("i[0]=%d\n",i[0]);
}

void func(int * p)
{
        *p=1;
        //p[0]=1
}

使用一般的结构体变量参数
#include <string.h>
#include <stdio.h>

struct student{
        long num;
        char name[20];
        char sex;
        float score;
};

void func(struct student);

void main()
{
        struct student stu={1001,"黎明",'M',78.5};
        func(stu);
        printf("学号是%d,姓名是%s\n",stu.num,stu.name);
}

void func(struct student stu)
{
        strcpy(stu.name,"张三");
        //printf("学号是%d,姓名是%s\n",stu.num,stu.name);
}

使用结构体指针参数
#include <string.h>
#include <stdio.h>

struct student{
        long num;
        char name[20];
        char sex;
        float score;
};

void func(struct student *);

void main()
{
        struct student stu={1001,"黎明",'M',78.5};
        func(&stu);
        printf("学号是%d,姓名是%s\n",stu.num,stu.name);
}

void func(struct student *stu)
{
        strcpy(stu->name,"张三");
        //printf("学号是%d,姓名是%s\n",stu->num,stu->name);
}

请问结果是什么?
#include <string.h>
#include <stdio.h>

struct student{
        long num;
        char name[20];
        char sex;
        float score;
};

void func(struct student *);

void main()
{
        struct student stu={1001,"黎明",'M',78.5};
        func(&stu);
        printf("学号是%d,姓名是%s\n",stu.num,stu.name);
}

void func(struct student *stu)
{
        struct student newStu={1002,"胡哥",'M',90};
        stu=&newStu;
        strcpy(stu->name,"张三");
}


 

[此贴子已经被作者于2010-12-13 20:05:56编辑过]

 回到顶部