c语言复杂数据类型

来源:互联网 发布:多益网络充值中心 编辑:程序博客网 时间:2024/06/05 21:59
////  main.c//  c结构体////  Created by stevenchang on 9/4/15.//  Copyright (c) 2015 cz. All rights reserved.//#include <stdio.h>/** 局部变量和全局变量 结构体 共用体 枚举 *//** 全局变量在整个文件内有效,局部变量作用域从定义那行开始,知道方法体结束同名变量,局部变量会覆盖全局变量 全局变量的使用:只有当此变量被全文使用时,可以使才用定义全局变量 */int a = 10;  //这定义了一个全局变量struct Date {    int year;    int month;    int day;};struct Person {   //结构体类型分配的内存空间为最大元素空间的倍数    char *name;    struct Date date;};struct Student {   //定义一个结构体类型,此时是不分配内存空间的    int age;    float weight;    char *name;};struct Teacher {    //定义一个结构体,并定义一个变量tea    int age ;    double height;    char *name;} tea;enum Sex {    //定义了一个枚举类型    male,    female};union Data {  //定义一个共用体(联合体)    int a;    int b;};int main(int argc, const char * argv[]) {    // insert code here...    int a = 20;    //这里定义了一个局部变量    printf("%d\n",a);        /**     结构体:是由多种数据类型组成的一种构造类型。     在定义结构体类型的时候,是不会分配内存空间的。     结构体也是存在作用域的,可以放在函数体内,也可以放在文件的开头部分。     */    printf("===============================\n");    struct Student stu = {12,23.4,"steven"}; //当定义一个结构体变量和初始化的时候会分配内存空间    stu.age = 23;     //通过结构体的点语法,我们可以对结构体中的元素进行赋值    printf("age=%d, weight=%f, name=%s\n",stu.age, stu.weight, stu.name);        printf("==================================\n");    struct Teacher tea = {34,45.5,"love"};   //虽然定义了变量但是不能直接使用tea,赋值时格式为struct Teacher tea = ......    tea.age = 20;    tea.height = 23.4;    tea.name = "Maggie";    printf("age=%d, height=%f, name=%s\n",tea.age, tea.height, tea.name);        /**     结构体数组     */    printf("===============================\n");    struct Student stud[3] = {        {1,2.3,"adaf"},        {2,3.4,"jkljl"},        {3,4.5,"eqrq"}};    //定义了一个结构体数组用于存放多个结构体    //遍历结构体数组    for (int i =  0 ; i < 3; i++) {        printf("age=%d, weight=%f, name=%s\n",stud[i].age, stud[i].weight, stud[i].name);    }        /**     指向结构体的指针     */    printf("===============================\n");    struct Teacher tea1 = {12,1.55,"aafaf"};    //结构体初始化和分配内存空间    struct Teacher *p = &tea1;    //定义一个结构体指针并初始化    //输出结构体元素的集中方式    //1.使用tea1进行输出    printf("age=%d, height=%.2f, name=%s\n",tea1.age, tea1.height,tea1.name);    printf("age=%d, height=%.2f, name=%s\n",(*p).age, (*p).height,(*p).name);    printf("age=%d, height=%.2f, name=%s\n",p->age, p->height,p->name);        /**     结构体嵌套     */    printf("================================\n");    struct Date date = {2011,12,23};    struct Person person = {"steven",date};    printf("year=%d, month=%d, day=%d\n",date.year, date.month,date.day);    printf("name=%s,year=%d,month=%d,day=%d\n",person.name, person.date.year, person.date.month,person.date.day);        /**     枚举类型:对于常量值,我们可以使用枚举类型     */    printf("===============================\n");    enum Sex sex;   //定义了一个枚举变量    sex = male;    //对枚举变量sex进行赋值    printf("sex=%d\n",sex);  //输出结果为1,枚举类型默认数据从0开始,后面一次增加        /**     共用体(联合体):分配的内存空间是最大元素的空间     每次使用只能取其中一个元素     */    printf("=============================\n");    union Data data;    data.a = 12;    data.b = 123;    //输出结果相同,是因为他们使用的是同一块内存空间,因此赋值只能给其中一个赋值    printf("a = %d, b = %d\n", data.a, data.b);        return 0;}

0 0
原创粉丝点击