中的“结构体”其实就相当于其他高级语言中的“记录” 结构体的定义方法如下: 例如: 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 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 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语言中的指针和结构体应该能够熟练的掌握 因篇幅问题不能全部显示,请点此查看更多更全内容