C
10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有樂安免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
語言中,結(jié)構(gòu)體(struct)是一種數(shù)據(jù)結(jié)構(gòu),是C語言中聚合數(shù)據(jù)類型(aggregate data type)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實現(xiàn)較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
結(jié)構(gòu)體同時也是一些元素的集合,這些元素稱為結(jié)構(gòu)體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
定義與聲明
結(jié)構(gòu)體的定義如下所示,struct為結(jié)構(gòu)體關(guān)鍵字,tag為結(jié)構(gòu)體的標(biāo)志,member-list為結(jié)構(gòu)體成員列表,其必須列出其所有成員;variable-list為此結(jié)構(gòu)體聲明的變量。
在實際應(yīng)用中,C語言結(jié)構(gòu)體數(shù)組常被用來表示一個擁有相同數(shù)據(jù)結(jié)構(gòu)的群體,比如一個班的學(xué)生、一個車間的職工等。
在C語言中,定義結(jié)構(gòu)體數(shù)組和定義結(jié)構(gòu)體變量的方式類似;
例:
struct stu{
char*name;//姓名
int num;//學(xué)號
int age;//年齡
char group;//所在小組
float score;//成績
}class[5];
表示一個班級有5個學(xué)生。
擴(kuò)展資料:
結(jié)構(gòu)體數(shù)組的引用與引用一個結(jié)構(gòu)體變量在原理上是一樣的。只不過結(jié)構(gòu)體數(shù)組中有多個結(jié)構(gòu)體變量,我們只需利用for循環(huán)一個一個地使用結(jié)構(gòu)體數(shù)組中的元素。
下面編寫一個程序,編程要求:從鍵盤輸入5個學(xué)生的基本信息,如姓名、年齡、性別、學(xué)號,然后將學(xué)號最大的學(xué)生的基本信息輸出到屏幕。
#includelt;stdio.hgt;
#includelt;string.hgt;
struct STU
{
char name[20];
int age;
char sex;
char num[20];
};
void OutputSTU(struct STU stu[5]);
//函數(shù)聲明,該函數(shù)的功能是輸出學(xué)號最大的學(xué)生信息
int main(void)
{
int i;
struct STU stu[5];
for(i=0;ilt;5;++i)
{
printf("請輸入第%d個學(xué)生的信息:",i+1);
scanf("%s%d%c%s",
stult;igt;.name,
stult;igt;
.age,stult;igt;
.sex,stult;
igt;.num);/*%c
前面要加空格,不然輸入時會將空格賦給%c*/
}
OutputSTU(stu);
return 0;
}
void OutputSTU(struct STU stu[5])
{
struct STU stumax=stu[0];
int j;
for(j=1;jlt;5;++j)
{
if(strcmp(stumax.num,stu[j]
.num)lt;0)//strcmp函數(shù)的使用
{
stumax=stu[j];
}
}
printf("學(xué)生姓名:%s學(xué)生年齡:%d學(xué)生性別:%c學(xué)生學(xué)號:
%s\n",stumax.name,
stumax.age,stumax.
sex,stumax.num);
}
輸出結(jié)果是:
請輸入第1個學(xué)生的信息:小紅22 F Z1207031
請輸入第2個學(xué)生的信息:小明21 M Z1207035
請輸入第3個學(xué)生的信息:小七23 F Z1207022
請輸入第4個學(xué)生的信息:小欣20 F Z1207015
請輸入第5個學(xué)生的信息:小天19 M Z1207024
學(xué)生姓名:小明學(xué)生年齡:21學(xué)生性別:M學(xué)生學(xué)號:Z1207035
參考資料:
百度百科——結(jié)構(gòu)體
1、結(jié)構(gòu)體數(shù)組傳給指針,實質(zhì)上是不可能的,本質(zhì)上傳的是數(shù)組首地址,根據(jù)偏移來操作數(shù)組,這樣看起來好像是真在操作數(shù)組一樣。就和普通指針一樣使用,只不過它是結(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)?;
}
trans(node);???????????????????????????????????????//改成trans(node);
void?trans(struct?linknode?node[8])
{int?o,i,m;
for(o=0;o8;o++)
{for(i=0;i2;i++)
{m=node[o].near[i];
for(i=0;i8;i++)
{if((node[m].dtc[i]+node[o].dtc[m])=node[o].dtc[i])
{node[o].dtc[i]=(node[m].dtc[i]+node[o].dtc[m]);
node[o].path[i]=m;
}
}
}
}
}
這是文件包含的問題,你把find函數(shù)也放到main.c文件里,就可以了,否則find函數(shù)不認(rèn)識你定義的結(jié)構(gòu)體