首页 > 代码库 > C语言结构体传值-->通过指针进行传值
C语言结构体传值-->通过指针进行传值
结构体的传值方法一共有三种形式,通过传递结构体,传递指针,传递结构体自身参数。传递指针的方式与另外两种方法最大的不同就是传递的实际上是结构体的地址,在传值的过程中,指针需要进过初始化分配内存(也就是使用malloc()函数分配空间给指针)
来看看以下代码:
有两个点需要注意:
(1)在方法设置类型的时候 是一个struct Book 类型,同时还是一个指针的类型,可以说(struct Book && pointer类型)
(2)在代码的32,33行处,声明了一个struct Book &&pointer类型的时候,一定要对指针类型做一次内存分配
1 /* 2 *该实例程序用来显示如何在方法体中传递结构体参数 3 该传递参数的方法是通过指针的形式对参数进行传递 4 getinfo()方法用于对结构体指针进行赋值操作 5 showinfo()方法用于对结构体进行输出 6 */ 7 #include <stdio.h> 8 #include <stdlib.h> 9 #define MAX_SIZE 2 10 #define MAX_TITLE_SIZE 30 11 #define MAX_AUTHOR_SIZE 30 12 //构造一个Book 类型的结构体 13 /* 14 *title 为char类型 15 author char 类型 16 price float 类型 17 */ 18 struct Book 19 { 20 char title[MAX_TITLE_SIZE]; 21 char author[MAX_AUTHOR_SIZE]; 22 float price; 23 24 }; 25 /* 26 声明getinfo() showinfo()方法 27 */ 28 struct Book * getinfo(struct Book *lib); 29 struct Book * showinfo(struct Book *lib); 30 int main() 31 { 32 struct Book *lib; 33 lib=(struct Book *)malloc(sizeof(struct Book)); 34 lib=getinfo(lib); 35 showinfo(lib); 36 return 0; 37 } 38 struct Book * getinfo(struct Book *lib) 39 { 40 printf("请输入书名:\t"); 41 gets(lib->title); 42 printf("请输入作者名:\t"); 43 gets(lib->author); 44 printf("请输入书的价格:\t"); 45 scanf("%f",&(lib->price)); 46 return lib; 47 } 48 struct Book * showinfo(struct Book *lib) 49 { 50 printf("the title is %s \t and the author is %s \t and the price is %f ", 51 lib->title,lib->author,lib->price); 52 }
运行结果为:
C语言结构体传值-->通过指针进行传值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。