【初识C语言】结构体

1.为什么要有结构体

(1)之前int、char等类型描述的结构体非常单一,只可描述一种类型。
(2)数组也是描述同一类型的集合,只可描述一种类型。
(3)而结构体使得C语言可以描述复杂类型,比如学生类型( 包含学生的名字、年龄、性别、电话号等信息)。

结构体和数组的区别:
·结构体:用来描述相同/不同数据元素类型的集合。
·数组:用来描述具有相同数据元素类型的集合。

2.结构体的定义

2.1结构体类型的定义

格式:

struct Stu//结构体类型名字为struct Stu(struct Stu类似于int)
{
    //结构体内容
	char Name[20];
	int Age;
	char Sex[5];
	char Tel[12];
};//记着加;

注意:
(1)结构体类型的定义是在main函数外部。
(2)此处指定义了一个结构体类型,还未定义对应结构类型的变量,所以还未在内存中开辟空间。

2.2定义结构体普通变量及访问

ps:在结构体访问变量时有两个重要的操作符:结构成员运算符“.”与结构体指针运算符“->”。

struct Stu Tom = { “Tom”, 13, “男”, “11122546698” };
//定义结构体普通变量并初始化,变量名为Tom,用变量名访问结构体。

#include <stdio.h>
struct Stu
{
	char Name[20];//名字
	int Age; //年龄
	char Sex[5];//性别
	char Tel[12];//电话号
};

int main()
{
	struct Stu Tom = { "Tom", 13, "男", "11122546698" };
	printf("%s,%d,%s,%s\n", Tom.Name, Tom.Age, Tom.Sex, Tom.Tel);//用变量名和结构成员运算符(.)访问结构体。
	
	return 0;
}

在这里插入图片描述

2.3定义结构体指针变量及访问

struct Stu *s = &Tom;
//定义结构体指针变量,s指向Tom,有如下两种访问方式。

#include <stdio.h>
struct Stu
{
	char Name[20];//名字
	int Age; //年龄
	char Sex[5];//性别
	char Tel[12];//电话号
};
int main()
{
	struct Stu Tom = { "Tom", 13, "男", "11122546698" };
	struct Stu *s = &Tom;
	
	//用结构体指针运算符(->)访问(这是常用访问方式)
	printf("%s,%d,%s,%s\n", s->Name, s->Age, s->Sex, s->Tel);
	
	//s为指针变量,*s对指针解引用,代表指针所指向的内容。
	//而且用指针和结构成员运算符访问结构体时,由于结构成员运算符(.)比指针解引用运算符(*)的优先级高,必须代括号。
	printf("%s,%d,%s,%s\n", (*s).Name, (*s).Age, (*s).Sex, (*s).Tel);
	
	return 0;
}

在这里插入图片描述

### C语言入门基础知识 #### 基本语法 C语言是一种广泛使用的编程语言,尤其适用于系统软件和应用软件的开发。程序通常由多个部分组成,其中`main()`函数作为程序执行的入口点[^1]。 ```c #include <stdio.h> int main() { printf("Hello, World!\n"); return 0; } ``` 这段代码展示了如何编写一个最简单的C程序来打印一条消息到控制台。这里包含了引入头文件、定义主函数以及调用输出函数等基本要素。 #### 数据类型 在C语言中存在多种内置的数据类型用于存储不同种类的信息: - 整型 (`int`):用来表示整数数值; - 浮点型 (`float`, `double`):可以保存带有小数位的实数; - 字符型 (`char`):单个字符常量; - 枚举类型 (`enum`):一组命名的整数值集合; 除了上述简单数据类型外还有指针、数组、结构体等多种复合类型的变量声明方式[^2]。 #### 控制结构 为了实现逻辑判断与循环操作等功能,在C中有条件语句(if/else) 和 循环语句(for/do...while/switch-case),它们允许开发者根据特定条件改变程序流程走向或重复某些指令直到满足终止条件为止。 ##### 条件分支 当需要根据不同情况采取相应措施时可采用if表达式来进行测试并作出选择: ```c if (expression) { /* do something */ } else if(another_expression){ /* alternative action */ }else{ /* default behavior */ } ``` ##### 迭代过程 通过for循环能够方便地设置起始值、结束界限及增量参数从而简化多次相似任务处理的工作量: ```c for(initialization; condition; increment/decrement){ /* repeated actions here */ } ``` 同样也可以利用do..while 或者 while 实现先执行再检验是否继续迭代的效果. #### 输入输出 对于交互式的应用程序来说获取用户输入并向其展示结果是非常重要的功能之一。前面提到过的`printf()` 函数即为向终端显示信息提供了便利的方法。除此之外还可以借助于scanf()读取键盘键入的内容供后续计算分析之用。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值