C语言之强大的结构体
2018-02-13 23:12
239 查看
一,struct 自定义类型介绍
一门语言通常先定义基本数据类型,还有很多自定义类型,不可能由语言一一实现。于是乎,给出一个struct关键字,开放自定义类型权限,于是便有了所有类型。此之谓“一生二,二生三,三生万物”。二,结构体类型定义
1,无名结构体类型不带来多余的类型名,只可在定义类型时定义变量。
#include<stdio.h> #include<string.h> struct Student { char name[100]; char sex; int age; float high; }stu1;//构造新类型的同时定义变量 int main() { strcpy(stu1.name,"Geng"); stu1.sex='M'; stu1.age=20; stu1.high=170; printf("Name:%s\nSex:%c\nAge:%d\nHigh:%.1f\n", stu1.name,stu1.sex,stu1.age,stu1.high); return 0; }
2,有名结构体类型
定义新类型名,在作用域内随处可用
#include<stdio.h> #include<string.h> struct Student { char name[100]; char sex; int age; float high; }; int main() { struct Student stu1;//使用"有名的"新结构体类型名定义变量 strcpy(stu1.name,"Geng"); stu1.sex='M'; stu1.age=20; stu1.high=170; printf("Name:%s\nSex:%c\nAge:%d\nHigh:%.1f\n", stu1.name,stu1.sex,stu1.age,stu1.high); return 0; }
3,结构体别名构造类型
使用typedef给结构体构造类型定义别名
typedef struct Student { char name[100]; char sex; int age; float score; }STU;//给结构体构造类型struct Student定义别名为STU STU stu1,stu2;//使用结构体构造类型别名定义结构体变量
注意:
结构体构造类型“{ }”后以“;”结尾
结构体类型名称为“struct + 结构体名”
三,结构体变量初始化及成员访问
凡是基本数据类型,既可在定义时初始化,也可先定义,之后再赋值; 凡是构造类型,只能在定义时初始化,不允许之后整体赋值。
1,初始化+以点运算符访问各成员
结果如下:
2,初始化+以指针向成员运算符访问成员
结果如下:
3,解引用符访问结构体成员
结果如下:
三,结构体赋值
对于相同类型的结构体可以直接赋值结果如下:
数组整体赋值的实现:
结果如下:
四,结构体数组
利用结构体数组实现存储4名学生的信息。输出4名学生信息:
内存分布:
注意:实际在内存中字符串存储在data ro数据区,在结构体中连续内存放的是字符串常量的地址。
相关文章推荐
- C语言用结构体写一个通讯录
- 【C语言】用结构体数组实现:有三个候选人,每个选民只能选一个人,编写一个选票程序,最终输出候选人的票数
- c语言指针及结构体复习
- 黑马程序员--c语言:结构体、枚举、预处理指令、typedef、static与extern、递归思想
- C语言结构体中的数据对齐
- 实例讲解c语言结构体大小 sizeof(struct A)
- C语言基础(19)-结构体,联合体,枚举和typedef
- 结构体,面向对象的基础----小话c语言(11)
- C语言中的结构体
- 结构体__C语言学习内容总结2017/11/25
- 黑马程序员——C语言之构造类型(结构体、枚举)
- 第22节 C语言结构体之结构体嵌套、结构体指针与结构体数组的代码实现
- C语言--结构体的内存对齐规则
- C语言13之什么是结构体?
- C语言结构体的内存对齐问题
- 黑马程序员--C语言自学笔记---12fgets、fputs、const、结构体
- C语言中全局结构体指针隐含的错误
- C语言结构体
- C语言中结构体struct编写的一些要点解析
- c语言结构体用法