您的位置:首页 > 编程语言 > C语言/C++

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数据区,在结构体中连续内存放的是字符串常量的地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息