复杂的c语言,c语言复杂数据类型
//
// main.c
// c結(jié)構(gòu)體
//
// Created by stevenchang on 9/4/15.
// Copyright (c) 2015 cz. All rights reserved.
//
#include
/**
局部變量和全局變量
結(jié)構(gòu)體
共用體
枚舉
*/
/**
全局變量在整個(gè)文件內(nèi)有效,局部變量作用域從定義那行開(kāi)始,知道方法體結(jié)束
同名變量,局部變量會(huì)覆蓋全局變量
全局變量的使用:只有當(dāng)此變量被全文使用時(shí),可以使才用定義全局變量
*/
int a = 10; //這定義了一個(gè)全局變量
struct Date {
int year;
int month;
int day;
};
struct Person { //結(jié)構(gòu)體類型分配的內(nèi)存空間為最大元素空間的倍數(shù)
char *name;
struct Date date;
};
struct Student { //定義一個(gè)結(jié)構(gòu)體類型,此時(shí)是不分配內(nèi)存空間的
int age;
float weight;
char *name;
};
struct Teacher { //定義一個(gè)結(jié)構(gòu)體,并定義一個(gè)變量tea
int age ;
double height;
char *name;
} tea;
enum Sex { //定義了一個(gè)枚舉類型
male,
female
};
union Data { //定義一個(gè)共用體(聯(lián)合體)
int a;
int b;
};
int main(int argc, const char * argv[]) {
// insert code here...
int a = 20; //這里定義了一個(gè)局部變量
printf("%d\n",a);
/**
結(jié)構(gòu)體:是由多種數(shù)據(jù)類型組成的一種構(gòu)造類型。
在定義結(jié)構(gòu)體類型的時(shí)候,是不會(huì)分配內(nèi)存空間的。
結(jié)構(gòu)體也是存在作用域的,可以放在函數(shù)體內(nèi),也可以放在文件的開(kāi)頭部分。
*/
printf("===============================\n");
struct Student stu = {12,23.4,"steven"}; //當(dāng)定義一個(gè)結(jié)構(gòu)體變量和初始化的時(shí)候會(huì)分配內(nèi)存空間
stu.age = 23; //通過(guò)結(jié)構(gòu)體的點(diǎn)語(yǔ)法,我們可以對(duì)結(jié)構(gòu)體中的元素進(jìn)行賦值
printf("age=%d, weight=%f, name=%s\n",stu.age, stu.weight, stu.name);
printf("==================================\n");
struct Teacher tea = {34,45.5,"love"}; //雖然定義了變量但是不能直接使用tea,賦值時(shí)格式為struct Teacher tea = ......
tea.age = 20;
tea.height = 23.4;
tea.name = "Maggie";
printf("age=%d, height=%f, name=%s\n",tea.age, tea.height, tea.name);
/**
結(jié)構(gòu)體數(shù)組
*/
printf("===============================\n");
struct Student stud[3] = {
{1,2.3,"adaf"},
{2,3.4,"jkljl"},
{3,4.5,"eqrq"}}; //定義了一個(gè)結(jié)構(gòu)體數(shù)組用于存放多個(gè)結(jié)構(gòu)體
//遍歷結(jié)構(gòu)體數(shù)組
for (int i = 0 ; i < 3; i++) {
printf("age=%d, weight=%f, name=%s\n",stud[i].age, stud[i].weight, stud[i].name);
}
/**
指向結(jié)構(gòu)體的指針
*/
printf("===============================\n");
struct Teacher tea1 = {12,1.55,"aafaf"}; //結(jié)構(gòu)體初始化和分配內(nèi)存空間
struct Teacher *p = &tea1; //定義一個(gè)結(jié)構(gòu)體指針并初始化
//輸出結(jié)構(gòu)體元素的集中方式
//1.使用tea1進(jìn)行輸出
printf("age=%d, height=%.2f, name=%s\n",tea1.age, tea1.height,tea1.name);
printf("age=%d, height=%.2f, name=%s\n",(*p).age, (*p).height,(*p).name);
printf("age=%d, height=%.2f, name=%s\n",p->age, p->height,p->name);
/**
結(jié)構(gòu)體嵌套
*/
printf("================================\n");
struct Date date = {2011,12,23};
struct Person person = {"steven",date};
printf("year=%d, month=%d, day=%d\n",date.year, date.month,date.day);
printf("name=%s,year=%d,month=%d,day=%d\n",person.name, person.date.year, person.date.month,person.date.day);
/**
枚舉類型:對(duì)于常量值,我們可以使用枚舉類型
*/
printf("===============================\n");
enum Sex sex; //定義了一個(gè)枚舉變量
sex = male; //對(duì)枚舉變量sex進(jìn)行賦值
printf("sex=%d\n",sex); //輸出結(jié)果為1,枚舉類型默認(rèn)數(shù)據(jù)從0開(kāi)始,后面一次增加
/**
共用體(聯(lián)合體):分配的內(nèi)存空間是最大元素的空間
每次使用只能取其中一個(gè)元素
*/
printf("=============================\n");
union Data data;
data.a = 12;
data.b = 123;
//輸出結(jié)果相同,是因?yàn)樗麄兪褂玫氖峭粔K內(nèi)存空間,因此賦值只能給其中一個(gè)賦值
printf("a = %d, b = %d\n", data.a, data.b);
return 0;
}
總結(jié)
以上是生活随笔為你收集整理的复杂的c语言,c语言复杂数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 苹果a9相当于骁龙多少
- 下一篇: c语言阶乘分解成素因子,阶乘的素因子分解