真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【C語言航路】第七站:結(jié)構(gòu)體初階-創(chuàng)新互聯(lián)

目錄

站在用戶的角度思考問題,與客戶深入溝通,找到敦化網(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é)


一、結(jié)構(gòu)體的聲明 1.結(jié)構(gòu)的基礎(chǔ)知識(shí)

結(jié)構(gòu)是一些值的集合,這些值稱為成員變量,結(jié)構(gòu)的每個(gè)成員可以是不同類型的變量

2.結(jié)構(gòu)的聲明

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)體成員的類型

結(jié)構(gòu)體成員的類型可以是標(biāo)量,數(shù)組,指針,甚至是其他結(jié)構(gòu)體

4.結(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)體中嵌套了一個(gè)結(jié)構(gòu)體,我們進(jìn)行初始化的時(shí)候,就要對(duì)里面在嵌套一層括號(hào)了,然后打印的時(shí)候,先使用.操作符找到里面的那個(gè)結(jié)構(gòu)體,然后在使用.操作符,就能找到結(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é)講述了結(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)查看詳情吧


網(wǎng)站名稱:【C語言航路】第七站:結(jié)構(gòu)體初階-創(chuàng)新互聯(lián)
新聞來源:http://weahome.cn/article/dppjgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部