您的当前位置:首页正文

结构体的定义

2024-02-14 来源:步旅网
人生充满着期待,梦想连接着未来。 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语言中的指针和结构体应该能够熟练的掌握

因篇幅问题不能全部显示,请点此查看更多更全内容