不能,只能放數(shù)據(jù),想要放函數(shù)的話,搞一個(gè)指向函數(shù)的指針,把指針放進(jìn)結(jié)構(gòu)體里就可以了。
隨縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
c中不能,c++里可以在結(jié)構(gòu)體內(nèi)定義函數(shù),用法和class定義類是一樣的,說穿了struct 和 class用法相同,但要注意的一點(diǎn)是,struct默認(rèn)的是public類型,而class默認(rèn)的是private類型的
以形參的形式放入函數(shù)體進(jìn)行操作,只需要將形參和實(shí)參類型匹配就可以了。比如a[i].riqi.year是int型,那么你的函數(shù)就可以寫成void
fun(int
i)。
c語言的結(jié)構(gòu)體是一組數(shù)據(jù)的組合,并不是簡(jiǎn)單的單一類型。所以在查找和輸出的時(shí)候,均不能直接操作,而是要進(jìn)行變通。
1
查找。
對(duì)于以某一項(xiàng)為關(guān)鍵字進(jìn)行查找時(shí),比如在結(jié)構(gòu)體中有int型的成員a,要查找a為100的結(jié)構(gòu)體變量,這時(shí)需要遍歷每個(gè)結(jié)構(gòu)體(數(shù)組、鏈表、或者其它任意形式),對(duì)每個(gè)元素的成員a值進(jìn)行比較,符合的則表示查找成功。
對(duì)于結(jié)構(gòu)體中元素較多,同時(shí)要對(duì)整個(gè)結(jié)構(gòu)體每個(gè)元素都匹配才算查找到的特殊情況,可以使用memcmp的方式,整體進(jìn)行比較,以減少代碼量。不過這種情況較為少見,不過多描述。
2
輸出。
對(duì)于結(jié)構(gòu)體的輸出,其實(shí)就是對(duì)其每一項(xiàng),或者若干項(xiàng)成員變量的輸出。
所以可以使用基本的輸出函數(shù),對(duì)每一項(xiàng)單獨(dú)輸出,輸出中為了方便閱讀,可以加一些說明文字。
如果對(duì)結(jié)構(gòu)體輸出有多處調(diào)用的需求,可以在將該功能封裝為函數(shù),供各個(gè)需要的函數(shù)調(diào)用。這樣的好處是,當(dāng)結(jié)構(gòu)體的成員出現(xiàn)變化,或者結(jié)構(gòu)體輸出要求更改時(shí),修改一處代碼即可完成所有的輸出修改,實(shí)現(xiàn)易于維護(hù)的效果。
純C標(biāo)準(zhǔn)中是不可以的 如果需要在結(jié)構(gòu)體里放函數(shù) 那你就在結(jié)構(gòu)體里放函數(shù)指針把,把指針指向相應(yīng)函數(shù)就好
改動(dòng)如下:
#include stdio.h
#includestring.h
enum gender
{
male,famale
};
typedef struct course
{
char coursename[10];
int coursescore;
}STC;
typedef struct student
{
long studentnumber;
char name[20];
int age;
enum gender sex;
STC coursescore[3];
struct student *next;
void (*ptooutput)(struct student*); // 改動(dòng)1:改成指針,與output函數(shù)匹配
}STD;
void output(struct student *p)
{
int i;
printf("學(xué)生%s:\n",p-name);
printf("他的學(xué)號(hào)是%ld\n",p-studentnumber); // 改動(dòng)2:學(xué)號(hào)
printf("他的年齡是%d\n",p-age); // 改動(dòng)3:年齡
if(p-sex==0)
{printf("他的性別是男\(zhòng)n");}
else
{printf("他的性別是女\n");}
for(i=0;i3;i++)
{
printf("他的%s",p-coursescore[i].coursename);
printf("成績(jī)是%d\n",p-coursescore[i].coursescore);
}
}
main()
{
STD a;
a.studentnumber=1011110201;
strcpy(a.name,"葉超");
a.age=19;
a.sex=male;
strcpy(a.coursescore[0].coursename,"數(shù)學(xué)");
a.coursescore[0].coursescore=87;
strcpy(a.coursescore[1].coursename,"英語");
a.coursescore[1].coursescore=72;
strcpy(a.coursescore[2].coursename,"C語言");
a.coursescore[2].coursescore=66;
a.ptooutput = output; // 改動(dòng)4:設(shè)置打印函數(shù)指針
a.ptooutput(a); // 改動(dòng)5:輸入?yún)?shù)為指針
}
當(dāng)前題目:c語言結(jié)構(gòu)內(nèi)放函數(shù) c語言結(jié)構(gòu)體里面能存放函數(shù)嗎
URL分享:http://jinyejixie.com/article40/dodoeho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈、云服務(wù)器、網(wǎng)站策劃、營銷型網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)