使用堆內(nèi)存,然后傳遞一個(gè)指向這個(gè)結(jié)構(gòu)體的指針就可以了,
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺(tái)小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了寶山免費(fèi)建站歡迎大家使用!
或者直接向子函數(shù)傳遞結(jié)構(gòu)體變量.
比如:
#include?stdio.h
#include?malloc.h
typedef?struct?STRC_def{
int?i;
int?j;
}STRC;
int?Func1(STRC?*?pSTRC);
int?Func2(STRC?aSTRC);
int?main()
{
STRC?*?a?=(STRC?*)malloc(sizeof(STRC));//使用堆內(nèi)存
STRC?b;//使用棧內(nèi)存
a-i=0;//初始化
a-j=0;
b.i=0;
b.j=0;
Func1(a);//傳遞指針
Func2(b);//傳遞變量
printf("a:?%d?%d\nb:?%d?%d\n",a-i,a-j,b.i,b.j);//結(jié)果應(yīng)該是?a:?1?2?\n?b:?0?0
//因?yàn)閭鬟f指針使用的是同一個(gè)存儲(chǔ)位置,而傳遞變量使用的是內(nèi)容復(fù)制的存儲(chǔ)位置
return?0;
}
int?Func1(STRC?*?pSTRC)
{
pSTRC-i=1;
pSTRC-j=2;
return?0;
}
int?Func2(STRC?aSTRC)
{
aSTRC.i=3;
aSTRC.j=4;
return?0;
}
在另外一個(gè)函數(shù)里面使用的源代碼如下:
#include"stdio.h"
#include "conio.h" //-------添加這個(gè)頭文件,因?yàn)間etch()函數(shù)來自它,否則編譯會(huì)有警告
struct student ? /*定義結(jié)構(gòu)體*/
{
void main()
{
void data_in(struct student putin[]);
void data_out(struct student *p);
void data_pout(struct student *s1);
data_in(pers); ? ? ?/*調(diào)用指針輸入函數(shù)*/
data_out(sp); ? ? /*調(diào)用指針輸出函數(shù)*/
data_pout(sp); ? /*調(diào)用函數(shù)名輸出函數(shù)*/
getch();
}
擴(kuò)展資料
1、函數(shù)是C語言的基本組成元素,當(dāng)我們調(diào)用一個(gè)函數(shù)時(shí),需要明確函數(shù)名和實(shí)參列表。實(shí)參列表中的參數(shù)可以是常量、變量、表達(dá)式或者空,并且各參數(shù)之間要使用英文逗號(hào)分隔開來。
2、在C語言中,函數(shù)的定義是獨(dú)立的,一個(gè)函數(shù)不能定義在另一個(gè)函數(shù)內(nèi)部。但在調(diào)用函數(shù)時(shí),可以在一個(gè)函數(shù)中調(diào)用另一個(gè)函數(shù),這就是函數(shù)的嵌套調(diào)用。接下來我們通過一個(gè)案例來演示函數(shù)的嵌套調(diào)用。
這是文件包含的問題,你把find函數(shù)也放到main.c文件里,就可以了,否則find函數(shù)不認(rèn)識(shí)你定義的結(jié)構(gòu)體