失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 对C语言 结构指针变量做函数的参数 结构作为函数的参数

对C语言 结构指针变量做函数的参数 结构作为函数的参数

时间:2024-06-04 21:59:50

相关推荐

对C语言 结构指针变量做函数的参数 结构作为函数的参数

一、结构指针变量做函数的参数

/*

用指针变量作函数参数进行传送,这时由实参传向形参的只是地址,从而减少了时间和空间的开销。

*/

/*

计算一组学生的平均成绩和不及格的人数,用结构指针变量作函数参数编程。

*/

#include<stdio.h>struct stu{int num;char name[8];char sex;float score;}boy[5] = {{101,"shi",'w',65},{102,"wen",'m',89},{103,"jie",'w',86},{104,"jie jie",'m',70},{105,"hi",'m',76},};int main(int argc,char **argv){struct stu *ps;void ave(struct stu *ps);ps = boy;ave(ps);return 0;}void ave(struct stu *ps){int c=0;int i;float ave;float s;for(i=0;i<5;i++,ps++){s += ps->score;if(ps->score < 60){c += 1;}}printf("s=%f\n",s);ave = s/5;printf("average=%f\ncount=%d\n",ave,c);}

二、结构作为函数的参数

您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。您可以使用上面实例中的方式来访问结构变量:

#include <stdio.h>#include <string.h>struct Books{char title[50];char author[50];char subject[100];int book_id;};/* 函数声明 */void printBook( struct Books book );int main( ){struct Books Book1; /* 声明 Book1,类型为 Books */struct Books Book2; /* 声明 Book2,类型为 Books *//* Book1 详述 */strcpy( Book1.title, "C Programming");strcpy( Book1.author, "Nuha Ali"); strcpy( Book1.subject, "C Programming Tutorial");Book1.book_id = 6495407;/* Book2 详述 */strcpy( Book2.title, "Telecom Billing");strcpy( Book2.author, "Zara Ali");strcpy( Book2.subject, "Telecom Billing Tutorial");Book2.book_id = 6495700;/* 输出 Book1 信息 */printBook( Book1 );/* 输出 Book2 信息 */printBook( Book2 );return 0;}void printBook( struct Books book ){printf( "Book title : %s\n", book.title);printf( "Book author : %s\n", book.author);printf( "Book subject : %s\n", book.subject);printf( "Book book_id : %d\n", book.book_id);}

三、结构体的指针变量 中可以存储 结构变量地址

您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:

struct Books *struct_pointer;

您可以定义指向结构的变量,如下所示:

struct Books Book1;

现在,您可以在上述定义的指针变量中存储结构变量的地址,为了查找结构变量的地址,请把&运算符放在结构名称的前面,如下所示:

struct_pointer = &Book1;

********让我们使用结构指针来重写上面(二中)的实例,这将有助于您理解结构指针的概念:

#include <stdio.h>#include <string.h>struct Books{char title[50];char author[50];char subject[100];int book_id;};/* 函数声明 */void printBook( struct Books *book );int main( ){struct Books Book1; /* 声明 Book1,类型为 Books */struct Books Book2; /* 声明 Book2,类型为 Books *//* Book1 详述 */strcpy( Book1.title, "C Programming");strcpy( Book1.author, "Nuha Ali"); strcpy( Book1.subject, "C Programming Tutorial");Book1.book_id = 6495407;/* Book2 详述 */strcpy( Book2.title, "Telecom Billing");strcpy( Book2.author, "Zara Ali");strcpy( Book2.subject, "Telecom Billing Tutorial");Book2.book_id = 6495700;/* 通过传 Book1 的地址来输出 Book1 信息 */printBook( &Book1 );/* 通过传 Book2 的地址来输出 Book2 信息 */printBook( &Book2 );return 0;}void printBook( struct Books *book ){printf( "Book title : %s\n", book->title);printf( "Book author : %s\n", book->author);printf( "Book subject : %s\n", book->subject);printf( "Book book_id : %d\n", book->book_id);}

如果觉得《对C语言 结构指针变量做函数的参数 结构作为函数的参数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。