0039 结构体

/*
 
    结构体变量有定义有三种方法
 
    1)先定义结构体,然后在定义结构体变量
 
      struct Student{
        
         //学生学号
         int sno;
         //学生姓名
         char name[21];
         //学生年龄
         int age;
         //学生成绩
         float score;
 
      };
 
      //注意:
      1)结构体定义完成以后,计算机并不会给结构体分配内存空间
      2)会在定义结构体变量后,分配存储空间
  
      //结构体变量定义格式:
      struct 结构体名 结构体变量名;
 
      struct Student stu1;  //这句话表示定义一个Student结构体类型的变量,变量的名称是stu1;
      //stu1因为是Student类型,stu1可以存放学生的学号、姓名、年龄、成绩
 
 
      struct Student stu4,stu2,stu3;  //定义多个结构体变量
 
 
    2)定义结构体的同时,定义结构体变量
 
       格式:
 
       struct 结构体名{
 
 
       }结构体变量1,结构体变量2....;
 
 
 
         struct Student{
         
             //学生学号
             int sno;
             //学生姓名
             char name[21];
             //学生年龄
             int age;
             //学生成绩
             float score;
         
         }stu5,stu6,stu7; //也是用Student结构体定义了三个结构体变量
         //名称分别为 stu5,stu6,stu7
         
 
 
    3)使用匿名结构体定义结构体变量
 
        struct {
 
 
 
        }结构体变量1,结构体变量2....;
 
        struct {
 
           char *color;
           int lunzi;
           int speed;
 
        }car1,car2,car3;
 
 
 
 
 */


#include <stdio.h>
struct Student{
    
    //学生学号
    int sno;
    //学生姓名
    char name[21];
    //学生年龄
    int age;
    //学生成绩
    float score;
    
};

int main(int argc, const char * argv[]) {
    
    //第一种方法
    struct Student stu1;  //这句话表示定义一个Student结构体类型的变量,变量的名称是stu1;
    
    //第二种,定义结构体的同时,定义结构体变量
    struct Student{
        
        //学生学号
        int sno;
        //学生姓名
        char name[21];
        //学生年龄
        int age;
        //学生成绩
        float score;
        
    }stu5,stu6,stu7; //也是用Student结构体定义了三个结构体变量
    //名称分别为 stu5,stu6,stu7

    struct {
        
        char *color;
        int lunzi;
        int speed;
        
    }car1,car2,car3;
    
    return 0;
}
//
//  main.c
//  15-结构体变量中成员的访问方法
//
//  Created by apple on 15/1/9.
//  Copyright (c) 2015年 itcast. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[]) {
    
    //定义一个Car类型的结构体
    struct Car{
    
        char *pp;
        int lunzi;
        int speed;
    
    };
    
    //用结构体类型,定义结构体变量
    struct Car car1;
    /*
      car1
     
      pp   "奥拓"
      lunzi  4
      speed 350
     
      car2
      pp   "时风"
      lunzi  3
      speed  180
     */
    
    //获取结构体变量中的成员
    // 获取品牌   car1.pp
    // 获取轮子   car1.lunzi
    // 获取速度   car1.speed
    
    //访问时风  car2.pp
    
    return 0;
}
//
//  main.c
//  16-结构体变量的初始化
//
//  Created by apple on 15/1/9.
//  Copyright (c) 2015年 itcast. All rights reserved.
//

#include <stdio.h>
#include <string.h>

int main(int argc, const char * argv[]) {
    
    struct Student{
        
        //学生学号
        int sno;
        //学生姓名
        char name[21];
        //学生年龄
        int age;
        //学生成绩
        float score;
        
    };
    
    //先定义结构体变量,然后再初始化
    struct Student stu1;  //占用字节数?
    
    //给结构体变变量初始化
    stu1.sno = 38;
    stu1.age = 18;
    stu1.score = 59.99f;
    char name1[21]="张三丰";
    //name1 = "张无忌";
    strcpy(stu1.name, "张三丰a");
    
    printf("学号:%d\n年龄:%d\n分数:%.2f\n姓名:%s\n",stu1.sno,stu1.age,stu1.score,stu1.name);
    //1、stu1.name 占用多个字节   21
    printf("stu1.name %ld\n",sizeof(stu1.name));
    //2、stu1.name 字符串长度是多少
    //汉字的编码问题
    // UTF-8  xcode中默认的中文的编码是utf-8格式
    //        国际通用编码 一个汉字占用 3个字节
    // GB2312 GBK  国标 一个汉字占用2个字节
    printf("stu1.name 长度:%ld\n",strlen(stu1.name));
    
    //stu1.name = "zbz";  //
    
    
    //2、定义结构体变量的同时,进行初始化
    //初始化值得顺序要和定义结构体的顺序一致
    struct Student stu2={8,"凤姐",18,49.99f};
    printf("\n\n学号:%d\n年龄:%d\n分数:%.2f\n姓名:%s\n",stu2.sno,stu2.age,stu2.score,stu2.name);
    
    //3、定义结构体的同时,还可以指定元素的初始化
    struct Student stu3={.name = "lady Gaga"};
    return 0;
}
//
//  main.c
//  18、结构体变量占用存储空间大小
//
//  Created by apple on 15/1/9.
//  Copyright (c) 2015年 itcast. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[]) {
    
    //计算结构体变量在内存中占用的字节数的方法
    //1)先找对齐模数
    //  对齐模数 是结构体中的基本数据类型中占用字节数最大的那个
    //          4
    //2)在计算结构体变量的中各个成员占用的字节和
    
    struct A{
    
        char ch[13];
        char ch1[11];
        int a;
   
    };
    //定义结构体变量
    struct A a1;
    printf("%ld\n",sizeof(a1));
    
    return 0;
}
//
//  main.c
//  19-结构体作用域
//
//  Created by apple on 15/1/9.
//  Copyright (c) 2015年 itcast. All rights reserved.
//

#include <stdio.h>

//定义一个全局的结构体
struct Person{

    int age;
    char *name;

};

int main(int argc, const char * argv[]) {
    
    //定义结构体变量
    struct Person p1={18,"胡一刀"};
    //此处是可以的
    char *str ="aa";
    str="bbb";
    p1.name = "苗人凤";
    
    printf("age = %d\nname = %s\n",p1.age,p1.name);
    

    {
        //定义一个结构体
        //定义局部的结构体,这个结构体和全局的结构体同名
        struct Person{
        
            int age;
        
        };
    
        
    }
    //此处定义的p2 是局部结构体Person的类型
    struct Person p2;
    p2.name = "户外i";
    
    
    return 0;
}

转载于:https://www.cnblogs.com/aiti/p/4678258.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值