人生充满着期待,梦想连接着未来。 C语言
中的“结构体”其实就相当于其他高级语言中的“记录” 结构体的定义方法如下: 例如: Struct student { int num;
char name[20]; char sex; int age;
float score; char addr[30];
};(注意最后的分号不能省略)
其中第一行的“student”是该结构体的名称 花括号里面的内容是结构体的成员名 这是声明结构体的一般形式
也可以在声明结构体的同时对它进行初始化 例如: struct stu {
int num; char *nAME; char sex; float score; }pupil[5]={ {101 \"Tom\" 'M' 45.8}
{102 \"Mike\" 'M' 62.5}
{103 \"Chris\" 'F' 92.5}
{104 \"Rose\" 'F'
87.6}
{105 \"Nate\" 'M' 58.8} };
该代码中的“pupil[5]”称为结构体数组 它属于结构体变量
在定义该变量的同时对它进行了初始化操作 我们也可以先声明结构体 然后再对它进行初始化操作
例如:
#include int main() {struct student {
char name[8]; int age; char sex[4]; char depart[20]; float grade1 grade2 grade3; }a;
float wage; char c='Y';
if(c=='Y'||c=='y') {
printf(\"\\nName:\"); scanf(\"%s\" a.name);
printf(\"Age:\"); scanf(\"%d\" &a.age);
printf(\"Sex:\"); scanf(\"%s\" a.sex);
printf(\"Dept:\"); scanf(\"%s\" a.depart);
printf(\"Grade1:\");
scanf(\"%f\" &a.grade1);
printf(\"Grade2:\"); scanf(\"%f\" &a.grade2);
printf(\"Grade3:\"); scanf(\"%f\" &a.grade3);
wage=a.grade1+a.grade2+a.grade3; printf(\"The sum of wage is %6.2f\\n\" wage); }
return 0; }
该程序中定义了一个名为“student”的结构体 变量名为“a”
然后再后面“if”包含的符合语句中对该结构体进行初始化 在此
我们可以看出 对结构体的初始化
只能对它里面的每个成员分别初始化
#include struct stu {int num; char *name; char sex; float score; }pupil[5]={ {101 \"Tom\" 'M' 45.8}
{102 \"Mike\" 'M' 62.5}
{103 \"Chris\" 'F' 92.5}
{104 \"Rose\" 'F' 87.6}
{105 \"Nate\" 'M' 58.8} };
void avg(struct stu *ps) {
int c=0 i;
float ave s=0;
for(i=0;i<5;i++ ps++) {
s+=ps->score;
if(ps->score<60) c+=1; }
printf(\"s=%.3f\\n\" s);
ave=s/5;
printf(\"average=%.3f\\ncount=%d\\n\" ave c); }
int main() {
struct stu *ps; ps=pupil; avg(ps); return 0; }
此程序是关于结构体指针变量作函数参数 这样可以提高程序的运行效率
程序中我们定义了一个“stu”的结构体 变量名为“pupil[5]” 并对其进行了初始化
在主函数中定义了一个该结构体的指针ps
将pupil赋值给ps
当函数avg()调用该结构体时 用指针ps来传递pupil的地址 从而
提高了该程序的效率
结构体与指针的结合使用
可以有效的解决现实生活中的很多问题
因此C语言中的指针和结构体应该能够熟练的掌握