c語言函數結構體
Ⅰ 在c語言中 函數和結構體的區別
C語言中結構體和函數有著本質上的不同。
結構體是用戶自己定義的一中數據類型,比如說你想要把學生信息作為一個整體存放在一個數據類型中,可以定義結構體,其中某個成員存放學號,某個存放姓名等等。
但是函數就完全不同了,函數是為了實現某種功能,比如你要在一堆學生中尋找某一個學生可以用函數來實現。
Ⅱ c語言函數能不能返回結構體
c語言函數可以返回結構體,操作方法如下:
1、首先在電腦中打開visual studio新建項目,給這個結構體取個名字叫student。
Ⅲ 在c語言中 函數和結構體的區別
一個程序通常圍繞這兩個方面進行:數據存儲和數據操作;
結構體是一種數據類型,用來將不同類型的數據組合在一起,決定數據的存儲問題(比如在內存佔多大的空間來,系統怎麼解釋存儲數據的位數據啦等等)同int, double 等編譯器內置的數據類型基本相同,只不過結構體是用戶自己定義的數據類型而已,例如:
struct student
{
char name[20];
int NO;
};
函數是對數據的一種操作;
Ⅳ 請問下C語言中的結構體有什麼用
C語言中的結構體可以定義一些復雜數據類型,把一些有內在聯系的不同變數放在一起封裝成一個整體,這就是結構體。
例如:以學生為例,學生存在學號,姓名,性別,班級等。此時你可以頂一個結構體,將這些學生信息封裝到一個結構體中。
code如下:
struct student{
int iID //學生的學號
char sStuName[10] //學生姓名
char sSex[10] //學生性別
....
}
(4)c語言函數結構體擴展閱讀
C語言結構體在函數中的應用
typedefstructtagSTUDENT{
charname[20];
intage;
}STUDENT;
voidfun(STUDENTstu)
{
printf(「stu.name=%s,stu.age=%d/n」,stu.name,stu.age);
}
Ⅳ c語言 函數 結構體
ANSI C沒有這樣的規定,可以直接傳值,也可以傳址。
K&R C 有這樣的規定,包括結構體不能整體賦值、不能作為函數的參數和返回值。
不過,現在的編譯器絕大多數都是ANSI C標準的編譯器,而不是K&R C標准。
Ⅵ C語言結構體函數
STUf(STUa)
{STUb={"Zhao",'m',85,90};
inti;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
以上是將b中的數據賦值給a,相當於a=b;這樣的一個操作
returna;
}
main()
{STUc={"Qian",'f',95,92},d;
d=f(c);//這里傳的c是個復製品(傳遞的不是結構體指針),所以c不會變,d接收f()函數的返回值,因為返回值的內容是f()中的b的值,所以,d與c不同
printf("%s,%c,%d,%d,",d.name,d.sex,d.score[0],d.score[1]);
printf("%s,%c,%d,%d ",c.name,c.sex,c.score[0],c.score[1]);
}
輸出結果為:A)Zhao,m,85,90,Qian,f,95,92
Ⅶ c語言結構體
C語言結構體定義:struct為結構體關鍵字,tag為結構體的標志,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體聲明的變數。
結構體是C語言中聚合數據類型(aggregatedatatype)的一類。結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
(7)c語言函數結構體擴展閱讀
1、struct是聲明結構體類型時必須使用的關鍵字,不能省略。「結構體」這個詞是根據英文單詞structure譯出的。
2、structSTUDENT是定義的數據類型的名字,它向編譯系統聲明這是一個「結構體類型」,包括name、num、sex、age、score、addr等不同類型的項。
3、structSTUDENT與系統提供的int、char、float、double等標准類型名一樣,都是數據類型,具有同樣的作用,都是用來定義變數的。
Ⅷ C語言結構體定義
C語言結構體定義:struct為結構體關鍵字,tag為結構體的標志,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體聲明的變數。
結構體是C語言中聚合數據類型(aggregatedatatype)的一類。結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
(8)c語言函數結構體擴展閱讀
1、struct是聲明結構體類型時必須使用的關鍵字,不能省略。「結構體」這個詞是根據英文單詞structure譯出的。
2、structSTUDENT是定義的數據類型的名字,它向編譯系統聲明這是一個「結構體類型」,包括name、num、sex、age、score、addr等不同類型的項。
3、structSTUDENT與系統提供的int、char、float、double等標准類型名一樣,都是數據類型,具有同樣的作用,都是用來定義變數的。
Ⅸ C語言——結構體/函數
#include<stdio.h>
#include<string.h>
#defineN(5)
structSTUDENT
{
charname[20];
intage;
floatchinese,math;
};
voidscan(structSTUDENT*a,intn);
voidprint(structSTUDENT*a,intn);
voidsort(void*a,intn,intsize,int(*cmp)(void*,void*));
intcmp_score(void*a,void*b);
intcmp_chinese(void*a,void*b);
intcmp_name(void*a,void*b);
intmain()
{
structSTUDENTa[N];
inti;
scan(a,N);
sort(a,N,sizeof(*a),cmp_score);
print(a,N);
sort(a,N,sizeof(*a),cmp_chinese);
print(a,N);
sort(a,N,sizeof(*a),cmp_name);
print(a,N);
return0;
}
voidscan(structSTUDENT*a,intn)
{
inti;
for(i=0;i<n;++i)
{
scanf(" %s%d%f%f",a[i].name,&a[i].age,&a[i].chinese,&a[i].math);
}
}
voidprint(structSTUDENT*a,intn)
{
inti;
for(i=0;i<n;++i)
{
printf("%s%d%f%f ",a[i].name,a[i].age,a[i].chinese,a[i].math);
}
}
voidsort(void*a,intn,intsize,int(*cmp)(void*,void*))
{
inti,j;
void*t=malloc(size);
for(i=0;i<n-1;++i)
{
for(j=0;j<n-i-1;++j)
{
if(cmp(a+size*j,a+size*(j+1)))
{
memcpy(t,a+size*j,size);
memcpy(a+size*j,a+size*(j+1),size);
memcpy(a+size*(j+1),t,size);
}
}
}
free(t);
}
intcmp_score(void*a,void*b)
{
return((structSTUDENT*)a)->chinese+((structSTUDENT*)a)->math<((structSTUDENT*)b)->chinese+((structSTUDENT*)b)->math;
}
intcmp_chinese(void*a,void*b)
{
return((structSTUDENT*)a)->chinese<((structSTUDENT*)b)->chinese;
}
intcmp_name(void*a,void*b)
{
returnstrcmp(((structSTUDENT*)a)->name,((structSTUDENT*)b)->name)>0;
}