网路摘抄【5】

1、sizeof不是函数,而是一元操作符;return也不是函数,而只是关键字。

2、typedef int size;

  此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size:

3、如果可移植性对你真的很重要,那么还是请你别倚赖calloc()把变量初始化为0。

4、如果流指向一个输出流或最近没有进行输入操作的更新流,那么fflush()函数就把任何没有写入流的数据发送到主环境并写入该文件;否则,状态就是不确定的。

5、在基于栈的系统上,黑客可以相当容易地赋给gets()一个精心构造的可以改写栈中返回地址的字符串,从而使指针指向内存中任意位置,这会让黑客为所欲为!我们所要做的就是永远都不要使用gets()。接受字符串时,可以小心地使用scanf(),但fgets()会更好。

6、也有一些程序员把上面的函数写成:

       (void)printf(“hello world!/n”);

       (void)scanf(“%d”,&value);

来说明他们放弃了函数的返回值。

7、同样,可以象下面这样隐藏指针语法:

typedef char * pstr;
int mystrcmp(pstr, pstr);

  这里将带我们到达第一个 typedef 陷阱。标准函数 strcmp()有两个‘const char *’类型的参数。因此,它可能会误导人们象下面这样声明 mystrcmp():

int mystrcmp(const pstr, const pstr);

  这是错误的,按照顺序,‘const pstr’被解释为‘char * const’(一个指向 char 的常量指针),而不是‘const char *’(指向常量 char 的指针)。这个问题很容易解决:

typedef const char * cpstr;
int mystrcmp(cpstr, cpstr); // 现在是正确的

8、   这种说法是不是有点令人惊讶,typedef 就像 auto,extern,mutable,static,和 register 一样,是一个存储类关键字。这并是说 typedef 会真正影响对象的存储特性;它只是说在语句构成上,typedef 声明看起来象 static,extern 等类型的变量声明。下面将带到第二个陷阱:

typedef register int FAST_COUNTER; // 错误

  编译通不过。问题出在你不能在声明中有多个存储类关键字。因为符号 typedef 已经占据了存储类关键字的位置,在 typedef 声明中不能用 register(或任何其它存储类关键字)。

9、 位图分为依赖于设备的位图 位图分为依赖于设备的位图(DDB)(DDB)和与设和与设备无关的位图备无关的位图(DIB)(DIB),二者有不同的用途。,二者有不同的用途。
   依赖于设备的位图 依赖于设备的位图(DDB)(DDB)
DDB(DeviceDDB(Device-dependent bitmap)dependent bitmap)依赖于依赖于具体设备,这主要体现在以下两个方面:具体设备,这主要体现在以下两个方面:
 DDBDDB的颜色模式必需与输出设备相一致。例如,的颜色模式必需与输出设备相一致。例如,如果当前的显示设备是如果当前的显示设备是256256色模式,那么色模式,那么DDBDDB必必然也是然也是256256色的,即一个像素用一个字节表示。色的,即一个像素用一个字节表示。
 在256256色以下的位图中存储的像素值是系统调色色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统调色板。板的索引,其颜色依赖于系统调色板。
DDBDDB的主要用途是保存位图。要保存的位图可以的主要用途是保存位图。要保存的位图可以来自资源位图,也可以是一个绘图的结果。来自资源位图,也可以是一个绘图的结果。

与设备无关的位图 与设备无关的位图(DIB)(DIB)
DIB(DeviceDIB(Device-indepententindepententbitmap)bitmap)的与设备无关性的与设备无关性主要体现在以下两个方面:主要体现在以下两个方面:
 DIBDIB的颜色模式与设备无关。例如,一个的颜色模式与设备无关。例如,一个256256色色的的DIBDIB即可以在真彩色显示模式下使用,也可即可以在真彩色显示模式下使用,也可以在以在1616色模式下使用。色模式下使用。
 256256色以下色以下(包括 包括256256色色))的的DIBDIB拥有自己的颜色拥有自己的颜色表,像素的颜色独立于系统调色板。表,像素的颜色独立于系统调色板。
由于 由于DIBDIB不依赖于具体设备,因此可以用来永久不依赖于具体设备,因此可以用来永久性地保存图象。性地保存图象。DIBDIB一般是以一般是以*.BMP.BMP文件的形式文件的形式保存在磁盘中的,有时也会保存在保存在磁盘中的,有时也会保存在**.DIB.DIB文件文件中。运行在不同输出设备下的应用程序可以通中。运行在不同输出设备下的应用程序可以通过过DIBDIB来交换图象。来交换图象

10、由宏。由LoadBitmapLoadBitmap加载的所有位图最终都应用加载的所有位图最终都应用DeleteObjectDeleteObject清清除。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值