首页 > 其他 > 详细

结构体

时间:2015-03-24 18:59:07      阅读:128      评论:0      收藏:0      [点我收藏+]

结构体的定义

“结构”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或

结构体的定义方式:

技术分享
#include <stdio.h>

#define com struct Computer

int main(int argc, const char * argv[]) {

        //第一种方法定义结构体变量

    struct Student//结构体名称一般大写

    {

        int age;

        char name[20];

        char sex;

        float score;

    };

    struct Student stu1;

   //第二种方法

    

    struct Cars

    {

        int speed;

        char pinpai[20];

        float weight;       

    }benchi;//直接在定义结构体的同时定义结构体变量

    //第三种方法

    struct//定义匿名结构体

    {

        int pages;

        char *name;

    }sanguoyanyi;

    //用宏定义

    struct Computer

    {

        char *pinpai;

        int yingpan;

    };

    com lianxiang;

    return 0;

}
View Code

结构体单个成员初始化

技术分享
#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
    
    struct Student//定义一个结构体
    {
        int age;
        char name[20];
        float score;
    };
    
    struct Student stu1;//定义一个结构体变量
    stu1.age=23;
    //stu1.name="陈擎霄";//这样赋值是错误的,因为stu1.name 是数组名,不能直接赋值
    
    strcpy(stu1.name, "陈擎霄");
    //通过这个函数赋值,首先得引入头文件,string.h.这个函数的
    //作用是把后面的字符赋值给前面的指针(数组名)
    
    
    printf("%s",stu1.name);
    
    
    struct Student cqx={.name="陈擎霄"};//可以通过.name这种方式赋值
    printf("%s",cqx.name);
    
    return 0;
}
View Code

结构体全部初始化 

技术分享
#include <stdio.h>



int main(int argc, const char * argv[]) {

    

    //1.先定义结构体,再初始化

    

    struct Student//定义一个结构体

    {

        int age;

        char name[20];

        float score;

    };

    

    struct Student stu1;

    stu1=(struct Student){23,"陈擎霄",99};//需要强制转换成struct Students

    

    

    //2.定义结构体的同时进行初始化

    struct Cars

    {

        int speed;

        char pinpai[20];

        float weight;

        

    }benchi={300,"奔驰",2000.0};

    

    struct Cars baoma={290,"宝马",1900.0};//3.定义结构体变量的同时进行初始化

    

    struct Cars aodi=baoma;//通过已经初始化的结构体变量赋值给另一个变量,这是值传递

    

    printf("1车的品牌是%s,最大速度是%d,重量是%.2f\n",benchi.pinpai,benchi.speed,benchi.weight);

    printf("2车的品牌是%s,最大速度是%d,重量是%.2f\n",baoma.pinpai,baoma.speed,baoma.weight);

    printf("3车的品牌是%s,最大速度是%d,重量是%.2f\n",aodi.pinpai,aodi.speed,aodi.weight);

    

    return 0;

}
View Code

结构体存储原理

结构体所占的额内存空间是每个成员占用的字节数之和(但是要考虑对齐问题)

对齐模数:结构体里变量数据类型所占最大的空间数

    struct Student//定义一个结构体

    {

        int age;

        char name[20];

        float score;

    };

这个结构体的模数就是float所占字节数,即为8,整个结构体所占空间为,16

结构体

原文:http://www.cnblogs.com/chenqingxiao/p/4363515.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!