2014年3月14日

自然对齐/指定字节对齐---个人笔记

摘要: 关于字节对齐,有时候真的不是很清楚,每个编译器都有自己的规定,而大多数都遵循自然对齐:就是取该数据结构中所占内存空间最大的那个变量对齐(先检查占内存较大的那个的大小,而其后的变量则向其靠齐)typedef struct aa{ char a; short b; }_aa;_aa A;A.a='1';A.b=7788;sizeof(A)? 答案为4.他们怎么存放的?小端模式下: --------0x0 a | '1'|0x1 b | 88 |0x2 | 77 |0x3 | * | --------那么这个呢?typedef struct _aa{ char ... 阅读全文

posted @ 2014-03-14 17:24 程良 阅读(503) 评论(0) 推荐(0) 编辑

offsetof宏---个人笔记

摘要: 标准库里面提供的offsetof(t,m)宏,用来计算两个变量在内存中的地址偏移量#include //原型:#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)/*#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)对这个宏的讲解我们大致可以分为以下4步进行讲解:1、( (TYPE *)0 ) 0地址强制 "转换" 为 TYPE结构类型的指针;2、((TYPE *)0)->MEMBER 访问TYP 阅读全文

posted @ 2014-03-14 17:01 程良 阅读(332) 评论(0) 推荐(0) 编辑

sizeof()和 strlen()的区别 --- 个人笔记

摘要: 在学习C语言和linux的时候,遇到了一些常见问题、题目,有些很简单,有些容易出错,本人水平有限,未免会出错,今天有时间,就将以前做的笔记,一一拿出来,写写blog。sizeof()和 strlen()的区别? 首先sizeof()是C语言提供的一个运算符,不是函数!它的作用主要是获得一个类型 或者一个对象里面内容的空间大小。 strlen()是一个标准库函数函数,用于计算一个字符串的长度,但是不把字符 '\0'计算在内。如char *buf="hello,world"strlen(buf)=11 sizeof(buf)=4 看看:sizeof( 2 + 3 阅读全文

posted @ 2014-03-14 16:51 程良 阅读(418) 评论(0) 推荐(0) 编辑

随机数洗牌

摘要: 扑克牌洗牌是我们生活中比较喜欢玩的一个游戏。那么我们有没有什么办法自己设计一个扑克牌洗牌的方法呢?在c运行库当中有一个随机函数rand,它可以生成0~32767之间的任意数。那么有没有可能利用这么一个函数对我们扑克牌进行随即洗牌呢? 在这里我抛砖引玉一下,谈一谈自己目前已经看到的两个算法。欢迎朋友们谈一谈其他的方法。随机数洗牌1)任意洗牌 步骤如下所示: a)首先生成一个数组,大小为54,初始化为1~54 b)按照索引1到54,逐步对每一张索引牌进行洗牌,首先生成一个余数 pos1 = rand %54,pos2=rand %54,那么我们的索引牌就和这两个余数牌进... 阅读全文

posted @ 2014-03-14 16:24 程良 阅读(251) 评论(0) 推荐(0) 编辑

itoa函数递归实现

摘要: 库函数中有atoi函数,用意是将字符形式输入的数据转换成数字,而库函数有没有提供一个将数字转换成字符的函数呢?答案是有的,而且功能很是强大,那就是sprintf()、snprintf()格式化转换函数,它的原型是:int sprintf(char *buf,const char *format,...) int snprintf(char *buf,int size,const char *format,...) 以上都是将数字转换成字符的形式的标准库函数。那么有没有别的自己实现的函数呢?好看看下面递归实现的:void _itoa(int value,char *str,int radix.. 阅读全文

posted @ 2014-03-14 15:59 程良 阅读(699) 评论(0) 推荐(0) 编辑

Socket编程详解

摘要: 什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的.. 阅读全文

posted @ 2014-03-14 15:15 程良 阅读(2159) 评论(0) 推荐(0) 编辑

网络之基础知识

摘要: TCP/IP是个协议集,根据OSI的七层理论,TCP/IP分为四层,分别是:应用层,传输层,网络层,数据链路层.我们一般说TCP在传输层,而IP在Internet层,TCP/IP的应用程序包括我们平时经常用到的Ping,Telnet,Ftp,Finger等等 一、IP地址的概念 我们知道因特网是全世界范围内的计算机联为一体而构成的通信网络的总称。联在某个网络上的两台计算机之间在相互通信时,在它们所传送的数据包里都会含有某些附加信息,这些附加信息就是发送数据的计算机的地址和接受数据的计算机的地址。象这样,人们为了通信的方便给每一台计算机都事先分配一个类似我们日常生活中的电话号码一样的标... 阅读全文

posted @ 2014-03-14 11:05 程良 阅读(426) 评论(0) 推荐(0) 编辑

导航