socket中的几个数据结构

本文深入探讨了C语言中结构体(struct)和联合体(union)的区别,通过实例展示了它们在内存分配上的不同表现。通过具体代码演示,直观呈现了不同数据类型如何影响内存布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sizeof 结构体(struct)和 联合体(union)的大小是不一样的

char  short int long

#include <stdio.h>

typedef unsigned char  u_char ;
typedef unsigned short u_short;
typedef unsigned long  u_long ;
typedef unsigned int   u_int  ;

struct in_addr
{
	union {
		struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
		struct { u_short s_w1,s_w2; } S_un_w;
		u_long S_addr;
        } S_un;
};

struct sockaddr_in {
	short   sin_family;
	u_short sin_port;
	struct  in_addr sin_addr;
	char    sin_zero[8];
};

struct x1
{
	int a1;
	int b1;
	int c1;
};

union x2
{
	int a1;
	int b1;
	int c1;
};
void main()
{
	printf("%d\n",sizeof(in_addr));		//  4
	printf("%d\n",sizeof(sockaddr_in));	// 16
	printf("%d\n",sizeof(x1));			// 12
	printf("%d\n\n",sizeof(x2));		//  4

	printf("%d\n",sizeof(char));		//  1
	printf("%d\n",sizeof(short));		//  2
	printf("%d\n",sizeof(int));			//  4
	printf("%d\n\n",sizeof(long));		//  4
	
	printf("%d\n",sizeof(u_char));		//  1
	printf("%d\n",sizeof(u_short));		//  2 
	printf("%d\n",sizeof(u_int));		//  4 
	printf("%d\n",sizeof(u_long));		//  4
	printf("%d\n",sizeof(float));		//  4
	printf("%d\n",sizeof(double));		//  8
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值