C结构体学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luohongtuCSDN/article/details/83151102

C结构体学习

  • 学习目标:
    1. 结构体的概念及用途
    2. 结构体类型的声明及其字长
    3. 结构体变量的定义,访问和赋值
    4. 结构体数组和结构体指针的使用

初识结构体

声明结构体类型

  1. 格式:

     struct 结构体名{
     		数据类型1  结构体成员1:
     		数据类型2  结构体成员2:
     		数据类型3  结构体成员3:
     		...
     }
    
  2. 支持的数据类型

    • 内置类型

      • char
      • short
      • int
      • float
      • double
    • 自定义类型

      • struct结构体
      • union联合体
      • enum枚举类型
  3. for example:

    struct person_infor{
    	char name[SIZE_IN]; 			/*姓名*/
    	int age;						/*年龄*/
    	char gender;					/*性别*/
    	char profession[SIZE_IN];		/*职业*/
    	char address[SIZE_IN];			/*地址*/
    	char telephone[SIZE_IN];		/*电话*/
    }
    

定义结构体变量

  1. 声明结构体类型,并定义结构体变量

    struct persion_infor{
    	char name[SIZE_IN];
    	int age;
    	char gender;
    	...
    }
    
    struct persion_infor Raul,Philip;
    struct persion_infor Joe;
    
  2. 不声明结构体类型,直接定义结构体变量

    struct{
    	char name[SIZE_IN];
    	int age;
    	char gender;
    	...
    } Raul,Philip,Joe;
    
  3. 使用typedef得到简化的结构体类型名,再定义结构体变量

    typede struct persion_infor{
    	char name[SIZE_IN];
    	int age;
    	char gender;
    	...
    } infor;
    infor  Raul,Phliip;
    
    

    补充下 typedel用法:

    	typedef  oldType  new Type;
    	typedef    char  myChar;
    	myChar s="hello world";
    	typedel struct{}       infor;
    		//  原类型		新类型
    	infor  student_infor; //声明变量
    

结构体的存储形式

  1. 结构体的本质
    1. 就是物理连续的线性数据结构
  2. 优化:
    1. 为了方便寻址,一般以其本身数据类型的字节长度为基本单位对齐。(类似mysql的char)
    2. 分配策略可以调整,通过使用#pragma pack 预处理命令来改变对齐规则(后面在了解下)
    3. 示例:
#

结构体的应用

访问结构体成员

初始化结构体变量

结构体变量的赋值

结构体数组

定义结构体数组

初始化结构体数组

结构体数组示例

结构体指针

指向结构体变量的指针

指向堆空间的结构体指针

指向结构体数组元素的指针

猜你喜欢

转载自blog.csdn.net/luohongtuCSDN/article/details/83151102