網(wǎng)絡服務機構的網(wǎng)站微商軟文范例
目錄
1.結構體類型的聲明
1.結構的基礎
2.結構體的聲明
3.結構體成員的類型
4結構體變量的定義和初始化
2.結構體成員的訪問
3.結構體傳參
1.結構體類型的聲明
1.結構的基礎
結構是一些值的集合,這些值稱為成員變量。結構的每個成員可以是不同類型的變量
結構體變量的創(chuàng)建
int main()
{struct jiegt p1;//這種方式創(chuàng)建的結構體變量為局部變量return 0;
}
2.結構體的聲明
ps:聲明號的結構體相當于圖紙,并不占用內(nèi)存的空間,僅當結構體的變量創(chuàng)建后才占用空間
//結構體的聲明
struct jiegt//jiegt為類型名
{char name[10];//一個漢字占兩個字符char sex[10];//sex與name稱為成員變量
}p1,p2;//在大括號外定義的結構體變量為全局變量
-----------------------------------------------
3.結構體成員的類型
結構體的類型可以是標量,數(shù)組,指針,甚至是其他結構體
//結構體中出現(xiàn)其他結構體
struct jiegt
{char name[10];char sex[10];
};
struct St
{struct jiegt p;int num; };
4結構體變量的定義和初始化
ps:浮點數(shù)在內(nèi)存中不能精確保存
#include<stdio.h>
struct jiegt
{char name[10];char sex[10];int high;
};
struct St
{struct jiegt p;int num; };
int main()
{struct jiegt p1={"張三","男",155};//結構體初始化struct St p2={{"李四","女",166},666};//結構體嵌套初始化printf("%s %s %d\n",p1.name, p1.sex, p1.high);printf("%s %s %d %d\n",p2.p.name, p2.p.sex, p2.p.high, p2.num);return 0;
}
張三 男 155
李四 女 166 666--------------------------------
Process exited after 0.09574 seconds with return value 0
請按任意鍵繼續(xù). . .
2.結構體成員的訪問
//結構體成員的兩種訪問方法
#include<stdio.h>
struct jiegt
{char name[10];char sex[10];int high;
};
struct St
{struct jiegt p;int num; };void print1(struct jiegt* pp)// 結構體指針->成員變量{printf("%s %s %d\n",pp->name,pp->sex,pp->high);}void print2(struct jiegt pp2)// 結構體變量.成員變量{printf("%s %s %d\n",pp2.name,pp2.sex,pp2.high);}
int main()
{struct jiegt p1={"張三","男",155};struct St p2={{"李四","女",166},666};printf("%s %s %d\n",p1.name, p1.sex, p1.high);printf("%s %s %d %d\n",p2.p.name, p2.p.sex, p2.p.high, p2.num);print1(&p1);print2(p1);return 0;
}
3.結構體傳參
//兩種結構體的傳參方式
void print1(struct jiegt* pp)// printf1函數(shù)中也要創(chuàng)建與p1結構體一樣大的空間,因為形參時實參的臨時拷貝,若結構體比較大則會造成空間浪費{printf("%s %s %d\n",pp->name,pp->sex,pp->high);}
void print2(struct jiegt pp2)//傳遞的是地址,調(diào)用函數(shù)進行打印時,是通過存儲的地址找到數(shù)據(jù)再打印{printf("%s %s %d\n",pp2.name,pp2.sex,pp2.high);}
int main()
{struct jiegt p1={"張三","男",155};struct St p2={{"李四","女",166},666};printf("%s %s %d\n",p1.name, p1.sex, p1.high);printf("%s %s %d %d\n",p2.p.name, p2.p.sex, p2.p.high, p2.num);print1(&p1);//print2(p1);//return 0;
}
可知:函數(shù)傳參的時侯,參數(shù)時需要壓棧的
如果傳遞一個結構體對象的時候,結構體過大,參數(shù)壓棧的系統(tǒng)開銷比較大,所以會導致性能的下降
所以結構體傳參的時候要傳結構體的地址