當前位置:首頁 » 編程語言 » c語言有結構體函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言有結構體函數

發布時間: 2022-08-06 07:13:46

1. c語言結構體類似函數嗎

一、你所發來的圖中,struct vote *create()這一句確實是一個函數!
二、它不是結構體,結構體定義語句沒有括弧,如:
struct vote
{
int a;
char name[20];
float score[3];
};
三、struct vote *create() 這條語句解釋,
剛說它是一個函數,其中:
函數名:create
函數的參數:無
函數的返回值類型:是struct vote * 型,即返回值是指向結構體vote類型的指針。
四、最後回到你的疑問:
1、C語言結構體類似函數嗎? 不是。
2、如圖,struct vote *create(); 這語句算是調用函數嗎?不是調用函數,而是定義函數。
3、如果算的話括弧內不用形參之類的嗎?既然是定義函數,括弧內可以用形參,當然也可以選擇不用形參。你發的例子就是不用參數的函數。
還有不明白之處,請留言。

2. c語言裡面的結構體是什麼意思

結構體(struct)是由一系列具有相同類型或不同類型的數據構成的數據集合,叫做結構。

在C語言中,結構體(struct)指的是一種數據結構,是C語言中聚合數據類型(aggregate data type)的一類。結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。

結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問

(2)c語言有結構體函數擴展閱讀

將一個結構體變數中的數據傳遞給另一個函數,有下列3種方法:

(1) 用結構體變數名作參數。一般較少用這種方法。

(2) 用指向結構體變數的指針作實參,將結構體變數的地址傳給形參。

(3) 用結構體變數的引用變數作函數參數。

在軟體開發過程中,常常需要動態地分配和撤銷內存空間,例如對動態鏈表中結點的插入與刪除。C語言中是利用庫函數malloc和free來分配和撤銷內存空間的。

3. 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

4. C語言有關函數結構體的

//代碼已經按照你的要求程序編譯好了。可以到網盤下載:各段代碼如下:ex701.cpp代碼:////編寫一個求字元串長度的函數stringlen、字元串大小寫轉換函數stringupr、stringlwr及字元串比較函數stringcmp,//並在main函數中調用並輸出結果。編寫的包含main函數的源程序以ex701.cpp命名,stringlen函數在ex701-1.cpp中實現,//stringupr函數在ex701-2.cpp中實現,stringlwr搜索函數在ex701-3.cpp中實現,stringcmp函數在ex701-4.cpp中實現////////////////////////////////////////////////////////////////////////////

5. c語言中,如何在結構體中實現函數的功能

c語言的結構體是一組數據的組合,並不是簡單的單一類型。所以在查找和輸出的時候,均不能直接操作,而是要進行變通。
1
查找。
對於以某一項為關鍵字進行查找時,比如在結構體中有int型的成員a,要查找a為100的結構體變數,這時需要遍歷每個結構體(數組、鏈表、或者其它任意形式),對每個元素的成員a值進行比較,符合的則表示查找成功。
對於結構體中元素較多,同時要對整個結構體每個元素都匹配才算查找到的特殊情況,可以使用memcmp的方式,整體進行比較,以減少代碼量。不過這種情況較為少見,不過多描述。
2
輸出。
對於結構體的輸出,其實就是對其每一項,或者若干項成員變數的輸出。
所以可以使用基本的輸出函數,對每一項單獨輸出,輸出中為了方便閱讀,可以加一些說明文字。
如果對結構體輸出有多處調用的需求,可以在將該功能封裝為函數,供各個需要的函數調用。這樣的好處是,當結構體的成員出現變化,或者結構體輸出要求更改時,修改一處代碼即可完成所有的輸出修改,實現易於維護的效果。

6. 關於C語言的結構體函數

如果在結構體定義時,或定義後取了別名,可以用別名,否則不能省「struct」
如:typedef
struct
Teacher
TEACHER;
則可以用TEACHER
代替struct
Teacher
C語言的結構體沒有存取控制許可權,相當於C++存取控制許可權中的public:
追問:
那struct
Teacher
*creat(struct
Teacher
*head);
和Teacher
*creat(struct
Teacher
*head);
一樣嗎?如果不一樣的話有什麼區別呢?
追答:
是一樣的,struct
Teacher
和Teacher只是同一東西的兩種不同寫法。

7. 關於C語言結構體函數的運用

定義的函數必須有一個結構體的指針參數,將結構體數組首地址傳遞進去,返回值也應該是一個指針。你的那個操作結構體的函數應該改寫,例如這樣:
struct student* inputstu_bylist(struct student* stuin)
{

for(int i=0;i<70;i++)
{
fflush(stdin);
printf("請輸入學生的姓名");
gets(stuin[i]->name);
………
………

}
return stuin;

}

8. 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;
}

9. C語言下寫有關結構體的函數

首先你要明確第4個的st並不是指針,並且結構體並不能直接給一個結構體,他不是基本類型。
第2個,的結構體是在堆里邊的,需要,釋放。
第3個是在棧中的變數。
要做鏈表的話一定要用2;一般的使用3即可。
第一個明顯不合理,第一行分配的空間有什麼用呢?

10. 在c語言中 函數和結構體的區別

一個程序通常圍繞這兩個方面進行:數據存儲和數據操作;
結構體是一種數據類型,用來將不同類型的數據組合在一起,決定數據的存儲問題(比如在內存佔多大的空間來,系統怎麼解釋存儲數據的位數據啦等等)同int, double 等編譯器內置的數據類型基本相同,只不過結構體是用戶自己定義的數據類型而已,例如:
struct student

char name[20];
int NO;
};
函數是對數據的一種操作;