struct几种定义的方法

#include <stdio.h>
/**
一般定义形式


*/
    struct student{
    char *name;
    int age;
    double score;
}
define1(){
    struct student stu;
    stu.name="hello";
    stu.age=20;
    printf("student name%s\n",stu.name);   //hello
    printf("student age %d\n",stu.age); //20
}
/**
    在定义时给出结构变量名
*/
struct people{
     char *username;
     int age;
}body;
define2(){
     body.username="flex";
     body.age="nihao";
     printf("people.name %s\n",body.username);//flex
     printf("people.age %s\n",body.age);     //age;


}
/**
    匿名结构,光给出结构变量名,没有给定结构名
*/
struct {
    int age;
}teacher,stu;
define3(){
    teacher.age=20;
    stu.age=30;
    printf("teacher.age %d \n stu.age %d \n",teacher.age,stu.age); //20 30
}
/**
 使用宏定义
*/
#define UT struct cat
UT{
     char * carName;
}
define4(){
    UT a;
    //cat st;    //不可以这样定义
    //ct.carName="my first cat";
    a.carName="my cat";
   // printf("my first car%s\n",ct.carName);
    printf("my cat%s  ",a.carName);// my cat
    


}
struct initMember{
    int st;
    int h;
}member={2,3},member1;


initDefine(){
    printf("\nmember init %d,",member.st);//2
    member1=member;
    printf("member1.st %d\n + member1.h %d\n",member1.st,member1.h);//2,3
}
struct sarray{
    int a,b;
}str[3],sarr[2]={
        {1,2},
        {3,8},
        };
structArray(){
    struct sarray sp[2];
    int i;
    sp[0].a=1;
    sp[1].a=2;
    sp[0].b=0;
    sp[1].b=4;


    for(i=0;i<2;i++){
        printf("sp %d 的a %d\n",i,sp[i].a);   //8
    }
    
    str[0].a=5;
    printf("array[0].a=%d",str[0].a);//5
    
    printf("\nsarr[1].b=%d\n",sarr[1].b);
}
struct structPoint{
    char c;
}sp={'a'};
structPoint(){
    /*
其访问的一般形式为:


    (*结构指针变量).成员名


   或为:


        结构指针变量->成员名*/




    struct structPoint *p=&sp;
    printf("结构指针的指向的值是%c\n",(*p).c);
    printf("结构指针访问值的第2种方式%c\n",p->c);
}


//typedef 是给类型起别名,那么还可以给struct起别名
typedef int Integer;
typedefsample(){
    Integer a=2;
    printf("typdef int a=%\d",a);
}
//typedef一个结构
typedef struct TestTypeDefStruct{
    char *p;
} DEFSTRUCT;
typedefStruct(){
    DEFSTRUCT ttds;
    ttds.p="typedef define a struct";
    printf("typedef 定义一个结构%s\n",ttds.p);
}






//typedef demo De;


/*
demo2(){
    De sp;
    sp.a=2;
}*/
int main(int args,char* arg0){
     //定义的4种方式
     define1();
     define2();
     define3();
     define4();
     initDefine();//结构变量的初始化
     structArray();//结构数组的定义
     structPoint();//指向结构变量的指针, struct 结构名 *结构指针变量名
     typedefsample();//typedef定义一个整形
     typedefStruct();
    // demo();


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值