C
狂奔之林
技术控,对很多技术都有涉猎,喜欢开源,了解新技术
走在架构师的路上
展开
-
C/C++中volatile关键字详解
1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by th...转载 2020-06-01 09:36:28 · 269 阅读 · 0 评论 -
NULL在C/C++下的不同定义
NULL在C/C++下的不同定义在C++中,NULL就是0,定义如下在C中,NULL就数字0在C++中,NULL是个万能指针,可以代表指向0地址的任何数据类型#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #end...转载 2019-09-17 17:59:03 · 902 阅读 · 0 评论 -
__stdcall,__cdecl,__fastcall的区别
三者区别一览表 __stdcall __cdecl __fastcall 参数传递方式 右->左压栈 右->左压栈 左边开始的两个不大于4字节(DWORD)的参数分别放在ECX和EDX寄存器,其余的参数仍旧自右向左压栈...原创 2019-04-13 12:12:07 · 284 阅读 · 0 评论 -
C 语言main 函数终极探秘
所有的C程序必须定义一个称之为main的外部函数,这个函数是程序的入口,也就是当程序启动时所执行的第一个函数,当这个函数返回时,程序也将终止,并且这个函数的返回值被看成是程序成功或失败的标志,如果在到达main函数体的末尾时没有遇到返回语句 ,它就被看看成是执行了return 0; 语句。 C的设计原则是把函数作为程序的构成模块。main()函数称之为主函数,一个C程序总是从转载 2015-01-08 10:54:29 · 514 阅读 · 0 评论 -
换行符‘\n’和回车符‘\r’ 的关系
换行符‘\n’和回车符‘\r’顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符 '\n' 10 换行(newline)'\r' 13 回车(return)也可以表示为'\x0a'和'\x0d'.(16进制)在windows系统下,回车换行符号是"\r\n".但是在Linux等系统下是没有"\r"转载 2015-01-06 10:56:52 · 1296 阅读 · 0 评论 -
24位真色位图转化为8位灰度位图
位图文件(bitmap file)保存顺序如下:位图头文件(BITMAPFILEHEADER)位图信息头文件(BITMAPINFOHEADER)调色板RGBQUAD(真彩色位图没有调色板)图像数据##释义1##位图头文件(BITMAPFILEHEADER):typedef s转载 2014-12-26 14:47:42 · 1972 阅读 · 0 评论 -
bmp图片格式
bmp图片格式了解先看一下bmp的头文件格式:注意:以上的多字节类型,如Int32是以先高位后低位存储的,如位文件大小:0002-0005,Int32类型,要按第5、4、3、2字节顺序组合,得到的整数才是正确的。 有了头文件信息后,我们就可以找到位图数据。位图数据是以4个字节(32位,对应32位CPU的优化)为一组来处理的。例1. 我们先来看简单的只有黑转载 2014-12-31 09:00:40 · 499 阅读 · 0 评论 -
C/C++中static关键字作用总结
1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; // global variablevoid msg(){ printf("Hello\n");} 复制代码//main.ci转载 2015-05-06 16:52:58 · 620 阅读 · 0 评论 -
编写静态链接库
在VC++6.0中new一个名称为libTest的static library工程,并新建lib.h和lib.cpp两个文件,lib.h和lib.cpp的源代码如下://文件:lib.h#ifndef LIB_H#define LIB_Hextern "C" int add(int x,int y); //声明为C编译、连接方式的外部函数#endi转载 2014-12-30 11:21:17 · 411 阅读 · 0 评论 -
编写静态链接库
在VC++6.0中new一个名称为libTest的static library工程,并新建lib.h和lib.cpp两个文件,lib.h和lib.cpp的源代码如下://文件:lib.h#ifndef LIB_H#define LIB_Hextern "C" int add(int x,int y); //声明为C编译、连接方式的外部函数#endi转载 2014-12-30 11:20:04 · 538 阅读 · 0 评论 -
函数指针
一、普通的函数指针一旦函数被编译并载入计算机中执行,它就会占用一块内存,这块内存有一个地址,因此函数也有地址。 1. 定义一个函数指针示例代码如下:void (*funcPtr)();这个例子将funcPtr定义为一个指向函数的指针,这个函数没有参数,返回值为空。注:*funcPtr 两侧的括号是必须的,如果去掉括号, void *funcPtr(); // 这表示funcPtr是一个函数,它返回转载 2015-02-03 10:12:54 · 388 阅读 · 0 评论