zoukankan      html  css  js  c++  java
  • 20170503

    结构体可以用来统一存储多个不同类型的数据
    结构体仅仅是一种数据类型,它本身不占有存储位置
    结构体仅仅描述了多种数据之间的关系
    结构体可以用来声明结构体变量,结构体变量实际占有内存空间

    声明结构体需要一个关键字struct
    结构体声明中包含多个变量声明语句,这些语句不会分配变量位置,因此不能初始化
    结构体声明本身可以放在头文件中
    可以在声明结构体的时候立刻声明结构体变量(不建议这样做,因为声明了变量就占据了内存,就不能放到头文件中了)
    可以用struct关键字和结构体名称一起作为数据类型名称来声明结构体变量
    typedef关键字可以用来给数据类型起别名,例如
      1 #include <stdio.h>
      2 int main() {
      3     struct person{
      4         int id;
      5         char name[20];
      6         float salary;
      7     };
      8     typedef struct person ppp;
      9     //struct person p;
     10     ppp p;
     11     return 0;
     12 }
    只能使用typedef关键字给数据类型起别名而不可以使用宏
    下面例子和上面一样2-6在声明结构体的同时立刻起了一个别名,这个时候可以省略结构体本身的名称(也就是下面的例子中的person可以省略)
      1 #include <stdio.h>
      2 typedef struct person {
      3     int id;
      4     char name[20];
      5     float salary;
      6 } ppp;
      7
      8 int main() {
      9     ppp p;
     10     return 0;
     11 }
    在c语言中结构体中不可以包含函数(因为函数要占存储位置)
    练习:声明一个结构体表示手机,一个手机包含一下信息(品牌,型号,价格)
    声明一个结构体变量表示iphone5
      1 #include <stdio.h>
      2 #include <string.h>
      3 typedef struct telephone {
      4     char brand[20];
      5     char model[20];
      6     double price;
      7 } phone;
      8
      9 int main() {
     10     phone iphone5;
     11     strcpy(iphone5.brand, "Apple");
     12     strcpy(iphone5.model, "Iphone5");
     13     iphone5.price = 2000.0;
     14
     15     printf("品牌是:%s ", iphone5.brand);
     16     printf("型号是:%s ", iphone5.model);
     17     printf("价格是:%g ", iphone5.price);
     18     return 0;
     19 }

    结构体变量也可以初始化,初始化的语法和数组初始化的语法一样
      1 #include <stdio.h>
      2 #include <string.h>
      3 typedef struct telephone {
      4     char brand[20];
      5     char model[20];
      6     double price;
      7 } phone;
      8
      9 int main() {
     10     phone iphone5 = {"Apple", "Iphone6", 200000.0};
     11     /*
     12        strcpy(iphone5.brand, "Apple");
     13        strcpy(iphone5.model, "Iphone5");
     14        iphone5.price = 2000.0;
     15     */
     16     printf("品牌是:%s ", iphone5.brand);
     17     printf("型号是:%s ", iphone5.model);
     18     printf("价格是:%g ", iphone5.price);
     19     return 0;
     20 }

     声明结构体表示屏幕上一个点,从键盘得到两个点的位置信息,并记录在两个结构体变量中,计算出这两个点的中点信息,并记录在一个新的结构体变量中,把新结构体变量的内容打印出来。
      1 #include <stdio.h>
      2
      3 typedef struct screen {
      4     int x;
      5     int y;
      6 } screen;
      7
      8 int main() {
      9     screen a1 = {}, a2 = {}, a3 = {};
     10     printf("请输入第一个点的位置:");
     11     scanf("%d%d", &a1.x, &a1.y);
     12     printf("请输入第二个点的位置:");
     13     scanf("%d%d", &a2.x, &a2.y);
     14     a3.x = (a1.x + a2.x) / 2;
     15     a3.y = (a1.y + a2.y) / 2;
     16     printf("中点的位置为:%d  %d ", a3.x, a3.y);
     17     return 0;
     18 }
     同类型的结构体变量之间可以直接赋值,不需要逐个子变量赋值

  • 相关阅读:
    VMware Workstation-虚拟机的安装
    Linux操作系统-命令-free
    Linux操作系统-命令-vmstat
    抛出一个异常
    字符集
    页面缓存
    表单域
    弹出式说明
    canselBubble 和 stopPropagation理解
    JS---递归函数理解
  • 原文地址:https://www.cnblogs.com/dongjian16/p/6802050.html
Copyright © 2011-2022 走看看