其實(shí),結(jié)構(gòu)名就是一個(gè)變量,由于你的形參和你的實(shí)參取名是一樣的。而且對(duì)于形參肯定會(huì)變
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了思南免費(fèi)建站歡迎大家使用!
實(shí)參不會(huì)變。所以,你中間的maxA變量,其實(shí)是子函數(shù)的形參變了。但是你的實(shí)參沒(méi)變
因此結(jié)果沒(méi)變
改,對(duì)于子函數(shù)中,你在void Max_Element_Find(struct Max_Element* maxA,double *A,int n)
Max_Element_Find(maxA,A,n);這樣就好了
1.可以把結(jié)構(gòu)體作為參數(shù)啊,
2.不去取地址的意思,是引用的意思,函數(shù)執(zhí)行時(shí)修改L的值,就直接的修改了實(shí)參的值,相當(dāng)于地址傳遞了。
3.真正調(diào)用的時(shí),如下:
SqList
tempStruct;
InitList_Sq(tempStruct)
這樣就可以了。
呵呵
1、結(jié)構(gòu)體數(shù)組傳給指針,實(shí)質(zhì)上是不可能的,本質(zhì)上傳的是數(shù)組首地址,根據(jù)偏移來(lái)操作數(shù)組,這樣看起來(lái)好像是真在操作數(shù)組一樣。就和普通指針一樣使用,只不過(guò)它是結(jié)構(gòu)體數(shù)組。
2、例程:
typedef?struct?Student
{
char?name[10]?;
int?age?;
}Student;
#define?LEN?10?
//print?all?Student?infomation
void?fun(Student?*pStu,int?len)
{
int?i?;?
for(i?=?0?;i??len?;++i)
{
printf("%s\t%d",pStu[i].name,pStu[i].age)?;
}
}
int?main?()
{
Student?stu[LEN]?;
fun(stu,LEN)?;
}
結(jié)構(gòu)這么定義吧:
typedef struct student{
int num;
char name[50];
float s1;
float s2;
floats3;
}student,*pStu;
你原來(lái)那么定義只能存一個(gè)字符的姓名。
比如在main中,你可以定義一個(gè)struct student的數(shù)組。
pStu a = (pStu)malloc(5*sizeof(student));
然后傳入指針
然后函數(shù)可以寫(xiě)為
int input(pStu ss, int length)//這里length是ss的長(zhǎng)度,防止內(nèi)存溢出。
int avag(pStu ss, int length)
下面是我寫(xiě)的input和main.你看一下吧。
#include stdlib.h
typedef struct student{
int num;
char name[50];
float s1;
float s2;
float s3;
}student,*pStu;
int input(pStu ss, int length)
{
int i = 0;
while ( i length )
{
printf("請(qǐng)輸入學(xué)生%d的學(xué)號(hào):",i);
scanf("%d",(ss-num));
printf("請(qǐng)輸入學(xué)生%d的姓名:",i);
scanf("%s",(ss-name));
printf("請(qǐng)輸入學(xué)生%d的第1門(mén)成績(jī):",i);
scanf("%f",(ss-s1));
printf("請(qǐng)輸入學(xué)生%d的第2門(mén)成績(jī):",i);
scanf("%f",(ss-s2));
printf("請(qǐng)輸入學(xué)生%d的第3門(mén)成績(jī):",i);
scanf("%f",(ss-s3));
printf("學(xué)生%d的 學(xué)號(hào)%d 姓名%s 第1門(mén)成績(jī)%f 第2門(mén)成績(jī)%f 第3門(mén)成績(jī)%f\n",
i, ss-num,ss-name,ss-s1,ss-s2,ss-s3);
i++;
}
return 0;
}
int main(int argc,char** argv)
{
int count;
printf("輸入學(xué)生數(shù):");
scanf("%d",count);
if ( count=0 )
{
printf("數(shù)量錯(cuò)誤!!\n");
return -1;
}
pStu a = (pStu)malloc(count*sizeof(student));
if ( a == NULL )
return -1;
input( a, count );
return 0;
}
可以的,這樣寫(xiě):
test((RGBColor){0x0, 0x1, 0x2});
這個(gè)意思是把{0x0, 0x1, 0x2}強(qiáng)制轉(zhuǎn)化為RGBColor類型。從語(yǔ)法語(yǔ)義上面是沒(méi)問(wèn)題的,在GCC編譯沒(méi)問(wèn)題。
但是51上面沒(méi)實(shí)驗(yàn),按C標(biāo)準(zhǔn)能說(shuō)得通,你可以試一試。
C語(yǔ)言中結(jié)構(gòu)體和函數(shù)有著本質(zhì)上的不同。
結(jié)構(gòu)體是用戶自己定義的一中數(shù)據(jù)類型,比如說(shuō)你想要把學(xué)生信息作為一個(gè)整體存放在一個(gè)數(shù)據(jù)類型中,可以定義結(jié)構(gòu)體,其中某個(gè)成員存放學(xué)號(hào),某個(gè)存放姓名等等。
但是函數(shù)就完全不同了,函數(shù)是為了實(shí)現(xiàn)某種功能,比如你要在一堆學(xué)生中尋找某一個(gè)學(xué)生可以用函數(shù)來(lái)實(shí)現(xiàn)。
網(wǎng)站欄目:c語(yǔ)言函數(shù)參數(shù)與結(jié)構(gòu)體,c語(yǔ)言函數(shù)的一般結(jié)構(gòu)
分享地址:http://m.rwnh.cn/article18/phpddp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)、App開(kāi)發(fā)、網(wǎng)站收錄、軟件開(kāi)發(fā)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)