网站商城注意事项,国外最新设计产品,电子商务企业网站策划,江门外贸集团有限公司英文网站现实生活中一个事物#xff0c;会有许多属性连接起来。而C语言引入一种构造数据类型——结构体
将属于一个事物的多个数据组织起来以体现其内部联系。
一、结构体类型的定义
结构体类型 是一种 构造类型#xff0c;它是由若干成员组成的#xff0c;每个成员可以是一个基本…现实生活中一个事物会有许多属性连接起来。而C语言引入一种构造数据类型——结构体
将属于一个事物的多个数据组织起来以体现其内部联系。
一、结构体类型的定义
结构体类型 是一种 构造类型它是由若干成员组成的每个成员可以是一个基本数据类型或者是一个构造类型。
结构体类型的名字 是由一个关键字 struct 和 结构体名 组成的 结构体定义的一般形式 struct 结构体类型名 { 类型说明符1 成员名1; 类型说明符2 成员名2; ... }; struct Stu
{int age;int ID;char name[10];
}; typedef 类型重命名 注意
struct 是结构体关键字不能省略。结构体类型名可以省略称为无名结构体。结构体成员可以是任何基本数据类型也可以是数组和指针类型定义结构体类型的语句要以 ; 结束注意 {} 后的 ;在编译时系统不对定义的结构体类型分配内存空间结构体类型与变量一样作用范围也有全局和局部之分 二、结构体变量的定义和初始化
struct Point
{int x;int y;
}p1;
struct Point p2; (1)先定义结构体类型再定义结构体变量
struct Stu
{int age;char name[10];
};
int main()
{//struct 结构体类型的名称 结构体变量名的列表;struct Stu stu1,stu2;return 0;
}
(2)定义结构体类型的 同时 定义结构体变量 struct 结构体类型名 { 成员列表; }结构体变量名的列表; struct Point
{int x;int y;
}p1,pn;
(3)直接定义结构体变量
struct
{int age;int num;char sex;
}s1,s2;
初始化可以指定成员初始化
三、结构体成员的访问
1.结构体变量访问成员
结构体变量的成员是通过 点操作符( . ) 访问的。点操作符接收两个操作数
#includestdio.h
#includestring.h
struct Stu
{int age;char name[10];
};
int main()
{struct Stu s;s.age 18;strcpy(s.name,zhangsan);printf(%s %d,s.name,s.age);return 0;
}
【结果】zhangsan 18
从调试上我们也可以看到 2.结构体指针访问指向变量的成员
#includestdio.h
struct Stu
{ char name[10];int age;
};
void Print(struct Stu* ps)
{printf(name %s age %d\n,(*ps).name,(*ps).age);printf(name %s age %d\n,ps-name,ps-age);}
int main()
{struct Stu s {zhangsan,18};Print(s);return 0;
} 如果只是打印成员可以不传址
建议传址因为运行效率高
四、结构体传参
#includestdio.h
struct S
{int data[100];int num;
};
struct S s { {1,2,3},100 };
//结构体传参
void print1(struct S s)
{printf(%d\n,s.num);
}
//结构体地址传参
void print2(struct S *ps)
{printf(%d\n,ps-num);
}
int main()
{print1(s);print2(s);return 0;
}
【结果 】100 100
根据上方代码 print2函数要好一些
因为函数传参的时候参数是需要压栈的
如果传递一个结构体对象的时候结构体过大参数压栈的系统系统开销比较大所以会导致性能的下降
结构体传参的时候要传结构体的地址