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 }

運行結果為:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM