C
文章平均质量分 57
taylor_ttt
这个作者很懒,什么都没留下…
展开
-
指针函数 函数的指针
<br /> 指针函数与函数的指针 指针函数<br />函数不但可以返回数值型数据而且还可以返回指针值,能够返回指针值的函数叫指针函数。<br /><br />指针函数定义格式如下:<br /><br /> <br />类型标识符 *函数名(形参表)<br /> 函数体<br /> <br />(1)定义指针函数时,函数名前必须有*。<br />(2)返回的是一个指针值,而不是一个数值型数据。<br />例该函数是截去参数字符串的尾部空格,并原创 2010-11-26 09:46:00 · 474 阅读 · 0 评论 -
#include “”和#include 的区别
对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h对于#include “filename.h” ,编译器从用户的工作路径开始搜索filename.h <br />原创 2010-11-25 14:32:00 · 339 阅读 · 0 评论 -
内存的字节对齐及结构体的sizeof计算
<br />(1)什么是字节对齐<br /> 一个变量占用 n 个字节,则该变量的起始地址必须能够被 n 整除,即: 存放起始地址 % n = 0, 对于结构体而言,这个 n 取其成员中的数据类型占空间的值最大的那个。<br />(2)为什么要字节对齐<br /> 内存空间是按照字节来划分的,从理论上说对内存空间的访问可以从任何地址开始,但是在实际上不同架构的CPU为了提高访问内存的速度,就规定了对于某些类型的数据只能从特定的起始位置开始访问。这样就决定了各种数据类型只能按照相应的规则在内存空间转载 2010-11-25 10:09:00 · 869 阅读 · 0 评论 -
浮点数与零的比较
<br />在C/C++语言中,Float为单精度,内存中占4个字节,有效数位是7位,(本来是8位的,但要除去一个正负符号位),即有效数字是7位,当超过这个精度时,浮点数就无能为力了。C++ 下的判断方法如下: <br /><br />“float型变量和“零值”比较的方法:<br />const float EPSINON = 0.000001;<br />if ((x >= - EPSINON) && (x <= EPSINON))<br />原创 2010-11-25 11:55:00 · 575 阅读 · 0 评论 -
关于结构体成员变量的字节对齐的分析
【原创】关于结构体成员变量的字节对齐的分析Author: 李文雄(Horisly) Email: [email protected]: 250125755Date: 2005-5-17#includestdio.h#includestdlib.hstruct A{ char c; int n; long l; double d;};struct B{ char c1; int n; char c2; lo转载 2010-11-25 10:12:00 · 636 阅读 · 0 评论 -
5分钟搞定内存字节对齐
<br />写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧.<br /> <br />{<br /> 如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?<br /> 体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假设一个体系结构的字长为w,那么它同时就假设了在这种体系结构上对宽度为w的数据的处理最转载 2010-11-25 10:10:00 · 497 阅读 · 0 评论 -
结构体学习网站
<br />http://wenku.baidu.com/view/fd1761aedd3383c4bb4cd273.html原创 2010-11-27 17:59:00 · 344 阅读 · 0 评论 -
C语言位运算详解
<br />位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作<br />运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。<br />C语言提供的位运算符列表:<br />运算符 含义 描述<br />& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0<br />| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1<br />^ 按位异或 若参加运算的两个二进制位值相同则为转载 2010-11-27 17:44:00 · 319 阅读 · 0 评论 -
内存对齐与位段
一.内存对齐<br /> 许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1的整数,我们就称类型S的对齐要求比T强(严格),而称T比S弱(宽松)。<br /> 这种强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。比如这么一种处理器,它每次读写转载 2010-11-27 17:41:00 · 504 阅读 · 0 评论 -
位段
关键:其存储位置一般从右至左进行存储即:data: c(6bits) | b(2bits) |a(8bits). 依编译器而定,TMS320的DSP的CCS按右至左的顺序。对于位域的定义尚有以下几点说明:0)位段成员的类型必须指定为unsigned int类型;1) 一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始;2) 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也转载 2010-11-27 17:35:00 · 491 阅读 · 0 评论 -
指针函数 函数的指针2
<br />(1) float(**def)[10] def是什么? <br />(2) double*(*gh)[10] gh是什么? <br />(3) double(*f[10])() f是什么? <br />(4) int*((*b)[10]) b是什么? <br /> <br /> <br /> <br />(1) def是一个指针, 指向的对象也是一个指针, 指向的指针最终指向的是10个float构成的数组. <br /> <br />(2) gh是指针, 指向的是10个元素构成的数组, 数组的原创 2010-11-26 09:54:00 · 333 阅读 · 0 评论 -
用EditPlus配置VC环境(VC6)
<br /> 对于C++开发, 我想在Windows下大家用的最多的应该是MS的VC++。但其强大的功能背后却有着“启动速度慢”,“占用资源多”的缺点,尤其是VS2005, 速度不是一般的慢。 当然,这也十分正常,鱼和熊掌向来是很难兼得。 用这个大家伙开发公司的大项目,用起来自然是得心应手;但对于一般的小程序,就有点“杀鸡用牛刀”的感觉了。 然而, 无论在工作还是平时自己学习中,写个小程序, 通常只要一个cpp文件就可以的测试程序还是经常有的事。这样每次打开VS2005就为写一个小小的测试程序,实在是有些“原创 2011-03-07 13:45:00 · 3485 阅读 · 2 评论