结构体-C语言

结构和本地变量一样,在函数内部声明的结构类型只能在函数内部使用

所以通常在函数外部声明的结构类型,这样就可以被多个函数所使用了

以下类似代码参考:

复制代码
 1 #include <stdio.h>
 2 
 3 struct date{
 4         int month;
 5         int day;
 6         int year;
 7     };
 8 
 9 int main(int argc,char const *argv[])
10 {
11     struct date today;
12     today.month=07;
13     today.day=31;
14     today.year=2014;
15     printf("Today's date is %i-%i-%i.\n",today.year,today.month,today.day);
16     return 0;
17 }
复制代码

声明结构的形式:

一:

复制代码
1 struct point{
2 
3   int x;
4 
5   int y;
6 
7 };
8 
9 struct point p1,p2;
复制代码

 

p1,p2都是point里面有x和y的值

二:

1 struct{
2 
3   int x;
4 
5   int y;
6 
7 } p1,p2;

 

p1,p2都是一种无名结构,里面有x和y

三:

1 struct point{
2 
3   int x;
4 
5   int y;
6 
7 } p1,p2;

 

p1,p2都是point里面有x和y的值

结构的初始化:

struct date today={07,31,2014};#每一项都赋值

struct date thismonth={.month=7,.year=2014};#只对个别元素赋值,未被赋值的元素,初始化为0

数组与结构在成员方面的区别:

数组用[]运算符和下标访问其成员

a[0]=10;

结构用.运算符和名字访问其成员

today.day

student.firstName

p1.x

p2.y

结构运算:

要访问整个结构,要用结构变量的名字

对于整个结构,可以做赋值、取地址,也可以传递给函数赋值

p1=(struct point){5,10};//相当于p1.x=5,p1.y=10

p1=p2;//相当于p1.x=p2.x,p1.y=p2.y

结构指针:

和数组不同,结构变量的名字并不是结构变量的地址,必须使用&运算符

sruct date *pDate=&today;

结构作为函数参数:

int numberOfDays(struct date d)

整个结构可以作为参数的值传入函数

这时候是在函数内新建一个结构变量,并复制调用者的结构的值

也可以返回一个结构

输入结构:

没有直接的方式可以一次scanf一个结构

我们可以打算写一个函数来读入结构

指向结构的指针:

复制代码
 1 struct date{
 2 
 3   int month;
 4 
 5   int day;
 6 
 7   int year;
 8 
 9 } myday;
10 
11 struct date *p=&myday;
12 
13 (*p).month =12;//下面的作用等同
14 
15 p->month=12;
复制代码

 

用->表示指针所指的结构变量中的成员

posted @   xxxbai  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示