目錄
站在用戶的角度思考問題,與客戶深入溝通,找到敦化網(wǎng)站設(shè)計(jì)與敦化網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋敦化地區(qū)。一、結(jié)構(gòu)體的聲明
1.結(jié)構(gòu)的基礎(chǔ)知識(shí)
2.結(jié)構(gòu)的聲明
3.結(jié)構(gòu)體成員的類型
4.結(jié)構(gòu)體變量的定義和初始化
二、結(jié)構(gòu)體成員的訪問
三、結(jié)構(gòu)體傳參
總結(jié)
2.結(jié)構(gòu)的聲明結(jié)構(gòu)是一些值的集合,這些值稱為成員變量,結(jié)構(gòu)的每個(gè)成員可以是不同類型的變量
struct tag
{
member-list;
}variable-list;
其中,tag是結(jié)構(gòu)體標(biāo)簽,是可以根據(jù)需求進(jìn)行更改的
struct tag是結(jié)構(gòu)體類型
member-list是結(jié)構(gòu)體成員(成員列表)
variable-list是結(jié)構(gòu)體變量
如下所示就是一個(gè)結(jié)構(gòu)體的聲明,但是還沒有創(chuàng)建變量。
struct Stu
{
//結(jié)構(gòu)體成員
char name[20];
int age;
char sex[10];
float sorce;
};
下面代碼就是結(jié)構(gòu)體的創(chuàng)建變量的過程了
#includestruct Stu
{
//結(jié)構(gòu)體成員
char name[20];
int age;
char sex[10];
float sorce;
}s4,s5;//s4,s5也是結(jié)構(gòu)體變量
int main()
{
//創(chuàng)建結(jié)構(gòu)體變量
struct Stu s1, s2, s3;
return 0;
}
當(dāng)然這兩種定義結(jié)構(gòu)體的變量是有一點(diǎn)區(qū)別的,s1,s2,s3都是局部的結(jié)構(gòu)體變量,而s4,s5都是全局的。
當(dāng)然我們也可以將s1,s2,s3,這些按照他們的那種方式定義在主函數(shù)外面,這樣他們也就是全局變量了
結(jié)構(gòu)體也可以在主函數(shù)內(nèi)部進(jìn)行聲明,不過一般都不會(huì)這樣使用的
#includeint main()
{
struct Stu
{
//結(jié)構(gòu)體成員
char name[20];
int age;
char sex[10];
float sorce;
};
//創(chuàng)建結(jié)構(gòu)體變量
struct Stu s1, s2, s3;
return 0;
}
3.結(jié)構(gòu)體成員的類型4.結(jié)構(gòu)體變量的定義和初始化結(jié)構(gòu)體成員的類型可以是標(biāo)量,數(shù)組,指針,甚至是其他結(jié)構(gòu)體
我們看如下代碼:
#includestruct Stu
{
//結(jié)構(gòu)體成員
char name[20];
int age;
char sex[10];
float sorce;
};
int main()
{
struct Stu s1 = { "zhangsan",18,"nan",91.5f };
struct Stu s2 = { "wangwu",19,"秘密",60.5f };
printf("%s %d %s %.1f\n", s1.name, s1.age, s1.sex, s1.sorce);
printf("%s %d %s %.1f\n", s2.name, s2.age, s2.sex, s2.sorce);
return 0;
}
這段代碼就定義了一個(gè)結(jié)構(gòu)體變量,然后并對(duì)其進(jìn)行賦值初始化,然后打印出這些信息。運(yùn)行結(jié)果如下
當(dāng)然,我們?cè)谇拔闹刑岬竭^,結(jié)構(gòu)體里面的成員可以是結(jié)構(gòu)體。我們來看下面的代碼
#includestruct S
{
int a;
int b;
};
struct P
{
double c;
struct S s;
float d;
};
int main()
{
struct P p = { 3.14,{5,6},4.58f };
printf("%lf,%d,%d,%f", p.c, p.s.a, p.s.b, p.d);
return 0;
}
二、結(jié)構(gòu)體成員的訪問這段代碼就是在結(jié)構(gòu)體中嵌套了一個(gè)結(jié)構(gòu)體,我們進(jìn)行初始化的時(shí)候,就要對(duì)里面在嵌套一層括號(hào)了,然后打印的時(shí)候,先使用.操作符找到里面的那個(gè)結(jié)構(gòu)體,然后在使用.操作符,就能找到結(jié)構(gòu)體里面的結(jié)構(gòu)體的成員了.
其實(shí)在上面我們已經(jīng)提及了一種結(jié)構(gòu)體成員的訪問方式,就是使用.操作符
如下所示,我們可以通過一個(gè)函數(shù),將p這個(gè)結(jié)構(gòu)體變量給傳過去,然后通過函數(shù)來打印。但是需要注意的是,這里是傳值調(diào)用。
#includestruct S
{
int a;
char b;
};
struct P
{
double c;
struct S s;
float d;
};
void Print1(struct P ps)
{
printf("%lf,%d,%c,%f\n", ps.c, ps.s.a, ps.s.b, ps.d);
}
int main()
{
struct P p = { 3.14,{5,'b'},4.58f};
//printf("%lf,%d,%c,%f", p.c, p.s.a, p.s.b, p.d);
Print1(p);
return 0;
}
當(dāng)然,也可以傳入地址過去
#includestruct S
{
int a;
char b;
};
struct P
{
double c;
struct S s;
float d;
};
void Print1(struct P ps)
{
printf("%lf,%d,%c,%f\n", ps.c, ps.s.a, ps.s.b, ps.d);
}
void Print2(struct P* ps)
{
//結(jié)構(gòu)體變量.成員名
printf("%lf,%d,%c,%f\n", (*ps).c, (*ps).s.a, (*ps).s.b, (*ps).d);
//結(jié)構(gòu)體指針->成員名
printf("%lf,%d,%c,%f\n", ps->c,ps->s.a, ps->s.b, ps->d);
}
int main()
{
struct P p = { 3.14,{5,'b'},4.58f};
//printf("%lf,%d,%c,%f", p.c, p.s.a, p.s.b, p.d);
Print1(p);
Print2(&p);
return 0;
}
這樣的話,我們打印就有兩種方式了,一種是先解引用然后使用.操作符,另外一種就是使用結(jié)構(gòu)體->結(jié)構(gòu)體成員
運(yùn)行結(jié)果為
三、結(jié)構(gòu)體傳參關(guān)于結(jié)構(gòu)體的傳參其實(shí)已經(jīng)在上面有所涉及,這里我們來提出一個(gè)問題,上面的代碼中,print1好還是print2好呢?
其實(shí)答案是print2,因?yàn)楹瘮?shù)傳參的時(shí)候,參數(shù)是需要壓棧的。 如果傳遞一個(gè)結(jié)構(gòu)體對(duì)象的時(shí)候,結(jié)構(gòu)體過大,參數(shù)壓棧的的系統(tǒng)開銷比較大,所以會(huì)導(dǎo)致性能的下降。
本小節(jié)講述了結(jié)構(gòu)體的聲明和定義,結(jié)構(gòu)體的訪問以及結(jié)構(gòu)體傳參這些知識(shí),當(dāng)然這些知識(shí)還是不夠的,因此我們這節(jié)課才叫做結(jié)構(gòu)體初階。后續(xù)我們結(jié)構(gòu)體還會(huì)更加詳細(xì)的展開講解
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧