结构体-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;
用->表示指针所指的结构变量中的成员
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验