IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c语言必备基础知识(5) -> 正文阅读

[C++知识库]c语言必备基础知识(5)

目录

结构体

1.特点

2.声明与定义

3.特殊的结构提成员变量

4.结构体成员变量初始化和访问

5.结构体赋值

6.结构体指针

7.结构体与函数,结构体嵌套结构体

联合体(共同体)

1.c语言联合

2.声明和定义联合

3.访问联合成员变量


结构体

1.特点

? ? ? ? (1)结构是C语言一种派生类型,允许多种数据类型的变量组合起来,自定义成新的类型,这些不同类型的变量称为结构成员变量,变量名称称为结构成员标识符。
? ? ? ? ?
注:数组是将多个相同类型的变量组合起来,多个变量没有标识符,只能通过下标访
问。

结构特点:

·结构允许多个不同类型变量声明和定义
·结构也可以没有成员变量,空结构
·结构成员变量不能是函数类型、结构体本身和void等不完整类型
·结构成员变量可以包含指向自身的指针,也可以
包含其他类型结构体
·结构类型同样需要先声明、定义,再使用

2.声明与定义

? ? ? ? ?(1)结构类型既可以单独声明和定义,也可以一并声明和定义,可以使用typedef自定义结构类型名称。

? ? ? ? ? ? ?结构声明的基本语法:

struct 结构类型名 {
成员变量类型1 变量名称1;
成员变量类型2 变量名称2;
...
}结构类型变量名;

注:结构类型名和结构类型变量名可以相同,也可以不同。

例如:以下四种方式是等价的:

// 声明同时定义结构类型 struct student
{
char name[10];
int age;
char sex[4];
};
// 声明和定义结构变量stu1,stu2 
struct student stu1,stu2;
// 先声明
struct student;
// 后定义
struct student{
char name[10];
int age;
char sex[4];};
//声明和定义结构变量
struct student stu1,stu2;
typedef struct student
{
char name[10];
int age;
char sex[4];
}STUDENT;
STUDENT stu1,stu2;

注:STUDENT是typedef自定义的新的类型名称,等价于structstudent结构类型
名。

// 同时声明定义结构类型和结构变量
// 省略结构类型名称,此时该匿名结构类型只能 struct
{
char name[10];
int age;
char sex[4];
} stu1,stu2

3.特殊的结构提成员变量

? ? ? ?(1)指向自身的指针变量

结构类型可以包含指向指向自己的指针变量,不能包含自身。

注:这种特性可以用来建立链表、树型等复杂数据结构。

例如:

// 以下正确,指向自身的指针
 struct student {
      ...
       struct student *s;

};

// 以下不正确,指向自身 
struct student {
      ... 
       struct student s;
};

? ? ? ? ??(2)指向其他结构体的成员变量

例如:

struct studentType1 {

     ...
};

struct studentType2{
      ...
     struct studentType1 ss;

}stu1,stu2;

4.结构体成员变量初始化和访问

? ? ? ? ?成员变量通过点运算符 .访问。

例如:初始化一条学生记录,初始化并且打印出来。



#include <stdio.h>
struct student
{
  // 姓名
  char name[10];
  // 年龄 
  int age;
  // 性别
  char sex[4];
  // 昵称
  char *nickname;};
  int main(void){
  // 定义变量时直接初始化
  struct student stu1 = {
  "云中君",
  20,
  "男",
  "风一般的男子"
};
  printf("%s\n",stu1.name);
  printf("%d\n",stu1.age); 
  printf("%s\n",stu1.sex);
  printf("%s\n",stu1.nickname);

return o;

}

输出结果:

云中君

20


风一般的男子

5.结构体赋值

6.结构体指针

? ? ? ? 结构指针,是指向结构体变量的指针,结构指针使用通过->间接访问结构体成员变量。

例如:初始化一条记录,使用结构指针间接访问成员变量

#include <stdio.h>

struct student
{
// 姓名
char name[10];

// 年龄

int age;

// 性别
char sex[4];

// 昵称
char *nickname;

};
int main(void)
// 定义变量时直接初始化
struct student stu1 = {
"马超",

20,

"男",
"我喜欢的英雄"

};

// 定义结构体指针变量,并且初始化

struct student *sp = &stu1;

printf("%s\n",sp->name);

printf("%d\n",sp->age);

printf("%s\n",sp->sex);
printf("%s\n",sp->nickname);
return 0;

}

输出结果:

马超

20

我喜欢的英雄

7.结构体与函数,结构体嵌套结构体

? ? ? ?(1) 结构体可以直接作为函数参数和返回值,结构体和普通变量一样,通过值传递传给函数参数,也可以作为整体返回值。

? ? ? ? (2) 结构体指针也可以作为参数传递给函数,同样也可以作为函数返回值类型

联合体(共同体)
? ? ? ? ? C语言联合

? ? ? (1)联合,也称为联合体或共用体,语法和结构一样。与结构相比,结构体是有n个成员变量,就分配n个成员的存储空间,各个成员变量独立:联合是有n个成员变量,只分配1个成员变量(最大的成员变量)存储空间,各个成员变量共享相同的内存空间。

? ? ? ?(2)特点:

·可以声明多个不同类型成员变量
·多个成员变量共享相同存储空间,修改任一变量
影响其它变量的值

? ? ? ? ?声明和定义联合

union 联合类型名称{
变量成员类型1 变量名1;

变量成员类型2 变量名2;
...

}联合类型变量名

例如:

// 仅声明联合类型

test union test;

// 声明和定义联合类型

test union test

{
int i;

float f;

};

// 声明定义联合类型,并且声明两个联合变量

union test

{
int i;

float f;

}test1,test2;
?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:51:43  更:2022-09-04 00:54:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:38:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码