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

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

c語言的自定義類型-創(chuàng)新互聯(lián)

c語言的自定義類型
  • 一,結構體
    • 1.說明
    • 2.聲明
    • 3.應用
    • 4.結構體變量的定義和初始化
    • 5.結構體內存對齊:計算結構體的大小
    • 6.為什么存在內存對齊
  • 二,枚舉
  • 三,聯(lián)合(共用體)

我們提供的服務有:網(wǎng)站設計、網(wǎng)站建設、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、陳巴爾虎ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的陳巴爾虎網(wǎng)站制作公司一,結構體 1.說明

結構體是一些值的集合,這些值稱為成員變量,結構的每個成員可以是不同類型的變量。

2.聲明
struct tag
{member - list;
}variable-list;
3.應用
//struct Stu
//{//	char name[20];
//	int age;
//}s1,s2;//全局變量,s1和s2是兩個結構體變量
typedef struct Stu
{char name[20];
	int age;
}stu;
int main()
{struct Stu s3, s4;//局部變量
	stu s5;
	return 0;
}
特殊的聲明:在聲明結構體的時候,可以不完全聲明
匿名結構體
struct
{int a;
	char b;
	float c;
}x,a[20],*p;
p=&x;同一個類型的匿名結構體,只能使用一次,該語句不合法
typedef struct
{int date;
	Node* next;//Node是重命名過后才有的,這是先有雞還是先有蛋的問題,這樣做是不能通過的
}Node;
typedef struct Node
{int date;
	Node* next;//同上
}Node;
//
typedef struct Node
{int date;
	struct Node* next;//合法
}Node;
4.結構體變量的定義和初始化
struct point
{int x;
	int y;
}p1 = {10,20};
struct point p2 = {0,0 };
struct s
{int num;
	char ch;
	struct point p;
	float d;
};
int main()
{struct point p3 = {1,2 };
	struct s s = {100,'m',{2,5},3.14f };
	struct s s2 = {.d=1.2f,.p.x=3,.p.y=5,.ch='w',.num=200};//亂序賦值,通過‘ . ’實現(xiàn)
	printf("%d %c %d %d %f\n", s.num, s.ch, s.p.x, s.p.y, s.d);
	printf("%d %c %d %d %f\n", s2.num, s2.ch, s2.p.x, s2.p.y, s2.d);
	return 0;
}
5.結構體內存對齊:計算結構體的大小
#includestruct s1
{char c1;
	int i;
	char c2;
};
struct s2
{char c1;
	char c2;
	int i;
};
struct s3
{double c1;
	char c2;
	int i;
};
struct s4
{char c1;
	struct s3 s3;
	double d;
};
int main()
{printf("%d\n", sizeof(struct s1));
	printf("%d\n", sizeof(struct s2));
	printf("%d\n", sizeof(struct s3));
	printf("%d\n", sizeof(struct s4));
	printf("%d", offsetof(struct s1, c2));//offsetof是宏,計算的是結構體變量在結構體中的偏移量
	return 0;
}

1.結構體的第一個成員,對齊到結構體在內存中存放位置的0偏移處
2.從第二個成員開始,每個成員都要對齊到(一個對齊數(shù))的整數(shù)倍偏移處 對齊數(shù):結構體成員自身大小和默認對齊數(shù)的較小值(vs的默認對齊數(shù)是8)
3.結構體的總大小,必須是所有成員的對齊數(shù)中大對齊數(shù)的整數(shù)倍,包含嵌套結構體成員中的對齊數(shù)。
4.如果結構體中嵌套了結構體成員,要將嵌套的結構體成員對齊到自己的成員中大對齊數(shù)的整數(shù)倍數(shù)

6.為什么存在內存對齊

1.平臺原因 不是所有的硬件平臺都能訪問任意地址上的任意數(shù)據(jù)的;某些硬件平臺只能在某些地址處取某些特定類型的數(shù)據(jù),否則會拋出硬件異常
2.性能原因 數(shù)據(jù)結構(尤其是棧)應該盡可能在自然邊界上對齊。原因在于,為了訪問未對齊的內存,處理器需要作兩次內存訪問; 而對齊的內存訪問僅需要一次訪問;
總體來說:結構體的內存對齊是拿空間換時間的做法

二,枚舉
枚舉:
enum color
{blue,
	red,
	green,
	yellow
};//枚舉常量如果不初始化,則常量的值默認從零開始,并依次增1,也就是0,1,2,3
enum color
{blue,
	red,
	green=6,
	yellow
};//枚舉常量被賦值,因此常量值為0,1,6,7
//既然是常量,值就不能被修改
三,聯(lián)合(共用體)
//聯(lián)合(共用體)
union Un
{char c;
	int a;
};//兩個變量共用同一塊空間

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)站欄目:c語言的自定義類型-創(chuàng)新互聯(lián)
新聞來源:http://weahome.cn/article/disijs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部