结构和本地变量一样,在函数内部声明的结构类型只能在函数内部使用
所以通常在函数外部声明的结构类型,这样就可以被多个函数所使用了
以下类似代码参考:
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;
用->表示指针所指的结构变量中的成员
标签:p2,p1,struct,int,C语言,today,结构 From: https://www.cnblogs.com/TiAmo-bai/p/17267127.html