对C语言 结构指针变量做函数的参数 结构作为函数的参数
生活随笔
收集整理的這篇文章主要介紹了
对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); }《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的对C语言 结构指针变量做函数的参数 结构作为函数的参数的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: 对C语言 结构数组 指向结构变量的指针
- 下一篇: typedef VS #define —