前面说过struct和union的区别,文中我们分别介绍了struct和union的特点,今天我们就说说struct和union的一个用法。下面有情另外一个主角:IP地址。
IP地址是给链接在Internet上的每个主机分配的一个32bit的地址,按照TCP/IP协议规定,IP地址用二进制来表示,长度为32bit,也就是4个字节。但是由32个0或者1组成的字符串谁看了都会晕,因此为了方便使用,IP地址实际采用点分十进制的表示形式,中间用符号’.'来分开,于是就有了现在的形式,例如“192.168.2.1”,怎么样,好记多了吧。
也许大家要问了,这个好像和struct、union没什么关系吧,知蚁说,这个关系可以有!先看一段代码:
#include “stdio.h”
union letuknowit
{
struct t_ip
{
unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;
}tip;
unsigned int nip;
};
void main()
{
letuknowit ip;
ip.tip.d = 192;
ip.tip.c = 168;
ip.tip.b = 2;
ip.tip.a = 1;
// ip.nip = 192*256*256*256 + 168*256*256 + 2*256 + 1;
printf(“ip.nip=%u,ip=%d.%d.%d.%d”,ip.nip,ip.tip.d,ip.tip.c,ip.tip.b,ip.tip.a);
}
输出结果为:ip.nip=3232236033,ip=192.168.2.1
这里我们定义了一个union类型来保存IP地址,union的其中一个成员是struct,struct有四个成员,分别表示IP地址中的每一段,这样我们用4个字节的空间就保存了一个IP地址,而且可以方便的取出IP地址中的每一段而不用做任何的计算。
上面代码中ip.nip是以int型表示的ip地址形式,当需要进行ip地址判断的时候,直接进行一次整形比较就行,不用一段一段的进行比较或者进行字符串比较了。
原创文章请注明转载于知蚁博客,本文地址:http://www.letuknowit.com/archives/82
Hard Hard Study。
Good good study,day day up!
过来看看了,不错不错
过来看看了
又是代码
可以去看微博客嘛
我也烦代码啊!呵呵
为啥只盯着最新的一篇文章呢?
现在IPV6的慢慢普及,会不会有影响
IPV6好像就得另想办法了
这个不太明白
又学习了一招
过来瞧瞧,希望回访哦。
发现我适合浏览你的轻博客
那太好了,终于有人能看懂了,呵呵
学习了招新的! 谢哈!
我还是来围观下,头大了
推荐你去【知蚁微博客】看看
太技术了,看不太懂啊。。。
我争取把所有看不懂的都给教会喽
蚂蚁 你的文章好深奥
那我以后从基本一点的东西写起,呵呵
这些方面都是你专注的吗?
我的工作就是写代码,算是老本行吧
技术人才啊
真是个代码高手。随便几句就搞定了。。
技术的高手。
哥们是高手原来
不敢当啊,呵呵
新手,不太懂,看来有待提高啊
这些都是基础知识,可以看看噻
博主是程序元么?
算是程序员吧,不过比程序员轻松点
这个是什么程序的代码啊
传说中的C++
这个写的可真专业啊
过奖了,一些C语言的基本知识
你的域名很。。。
很好记还是很长啊?
冲击式破碎机网站主也来看看了哈。
欢迎常来砸一砸,呵呵
貌似技术性很强啊!!支持下先!
多谢支持
咦 你也挂拿福能啦 哈哈 软文呢
我N久前就挂了,在松松博客上看到了,当天就挂上了
所谓的软文也准备好了,(*^__^*) 嘻嘻……
这个还真不知道
那现在知道了哈
真晕
这些方法以前都没有用过,
正找呢,谢谢