C++常用数据类型和Windows常见数据类型

摘要:
指针类型的命令方式一般是在其指向的数据类型前加“LP”或“P”,比如指向DWORD的指针类型为“LPDWORD”和“PDWORD”各种句柄类型的命名方式一般都是在对象名前加“H”,比如位图对应的句柄类型为“HBITMAP”。

一、C++基本的内置类型

C++常用数据类型和Windows常见数据类型第1张

C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的 C++ 数据类型:

类型关键字
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void
宽字符型wchar_t

一些基本类型可以使用一个或多个类型修饰符进行修饰:

  • signed
  • unsigned
  • short
  • long

下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。

注意:不同系统会有所差异。

复制代码
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     //打印int类型的最大值
 8     cout << "int类型最大值:" << INT_MAX << endl;
 9     //打印int类型的最小值
10     cout << "int类型最小值:" << INT_MIN << endl;
11     //打印int所占字节数
12     cout << "int类型字节数:" << sizeof(int);
13     return 0;
14 }
复制代码
类型位数(字节)范围
char8位,1 个字节-128 到 127 或者 0 到 255
unsigned char8位,1 个字节0 到 255
signed char8位,1 个字节-128 到 127
int32位,4 个字节-2147483648 到 2147483647
unsigned int32位,4 个字节0 到 4294967295
signed int32位,4 个字节-2147483648 到 2147483647
short int16位,2 个字节-32768 到 32767
unsigned short int16位,2 个字节0 到 65,535
signed short int16位,2 个字节-32768 到 32767
long int64位,8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int64位,8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int64位,8 个字节0 to 18,446,744,073,709,551,615
float32位,4 个字节+/- 3.4e +/- 38 (~7 个数字)
double32位,8 个字节+/- 1.7e +/- 308 (~15 个数字)
long double128位,16 个字节+/- 1.7e +/- 308 (~15 个数字)
wchar_t2 或 4 个字节1 个宽字符

从上表可得知,变量的大小会根据编译器和所使用的电脑而有所不同。

二、Windows常见数据类型

1 typedef unsigned longDWORD;
2 typedef intBOOL;
3 typedef unsigned charBYTE;
4 typedef unsigned shortWORD;
5 typedef floatFLOAT;
6 typedef FLOAT               *PFLOAT;
7 typedef BOOL near           *PBOOL;
8 typedef BOOL far            *LPBOOL;
9 typedef BYTE near           *PBYTE;
10 typedef BYTE far            *LPBYTE;
11 typedef int near            *PINT;
12 typedef int far             *LPINT;
13 typedef WORD near           *PWORD;
14 typedef WORD far            *LPWORD;
15 typedef long far            *LPLONG;
16 typedef DWORD near          *PDWORD;
17 typedef DWORD far           *LPDWORD;
18 typedef void far            *LPVOID;
19 typedef CONST void far      *LPCVOID;
20 
21 typedef intINT;
22 typedef unsigned intUINT;
23 typedef unsigned int        *PUINT;

1、常见数据类型
WORD: 16位无符号整形数据
DWORD: 32位无符号整型数据(DWORD32)
DWORD64: 64位无符号整型数据
INT: 32位有符号整型数据类型
INT_PTR: 指向INT数据类型的指针类型
INT32: 32位符号整型
INT64: 64位符号整型
UINT:无符号INT
LONG: 32位符号整型(LONG32)
ULONG: 无符号LONG
LONGLONG: 64位符号整型(LONG64)
SHORT: 无符号短整型(16位)
LPARAM: 消息的L参数
WPARAM: 消息的W参数
HANDLE: 对象的句柄,最基本的句柄类型
HICON: 图标的句柄
HINSTANCE: 程序实例的句柄
HKEY: 注册表键的句柄
HMODULE: 模块的句柄
HWND:窗口的句柄
LPSTR: 字符指针,也就是字符串变量
LPCSTR: 字符串常量
LPCTSTR: 根据环境配置,如果定义了UNICODE宏,则是LPCWSTR类型,否则则为LPCSTR类型
LPCWSTR: UNICODE字符串常量
LPDWORD: 指向DWORD类型数据的指针
CHAR: 8比特字节
TCHAR: 如果定义了UNICODE,则为WCHAR,否则为CHAR
UCHAR:无符号CHAR
WCHAR:16位Unicode字符
BOOL: 布尔型变量
BYTE: 字节类型(8位)
CONST: 常量
FLOAT: 浮点数据类型
SIZE_T: 表示内存大小,以字节为单位,其最大值是CPU最大寻址范围
VOID: 无类型,相当于标准C语言中的void
WINAPI:Windows API的函数调用方式,常见于SDK头文件中对API函数的声明中,相当于_stdcall(更严格地说,这不是数据类型,而是一种函数调用约定

2、Windows数据类型命名规律

基本数据类型包括:BYTE、CHAR、WORD、SHORT、INT等。
指针类型的命令方式一般是在其指向的数据类型前加“LP”或“P”,比如指向DWORD的指针类型为“LPDWORD”和“PDWORD”
各种句柄类型的命名方式一般都是在对象名前加“H”,比如位图(BITMAP)对应的句柄类型为“HBITMAP”。
无符号类型一般是以“U”开头,比如“INT”是符号类型,“UINT”是无符号类型
根据这些命名规律以及自己的经验看到一些没见过的数据类型也就能知道它的代表的意思

3、Windows参数简写

1、b 布尔

2、 by BYTE

3、 c chr 或WCHAR TCHAR

4、 n short

5、 i int

6、 x、y 分别表示x 坐标,y 坐标

7、 cx、cy 分别表示x 方向长度和y 方向长度

8、 b 或f BOOL(int),f 代表“flag”

9、 w WORD(无符号short)

10、l LONG 长整数

11、dw DWORD 无符号长整数

12、fn function 函数

13、s string 字符串

14、sz 以0 字节结尾的字符串

15、h 句柄

16、p 指针

17、lpfn 指向函数的长指针

18、cb 字节数

19、lpsz 指向以0 结尾的字符串的长指针

20、g_ 全局变量

21、c_ 常量

22、m_ 类数据成员

23、s_ 静态变量

24、CS_ 类风格选项

25、CW_ 创建窗口选项

26、DT_ 绘制文本选项

27、IDI_ 图标ID 号
28、IDC_ 光标ID 号

29、MB_ 消息框选项

30、SND_ 声音选项

31、WM_ 窗口消息

32、WS_ 窗口风格

33、rc 矩形

4、Windows数据类型与标准C数据类型的关系

查看Windows数据类型的定义可以看到,所有的windows数据类型都是由C数据类型经过类型重定义得到的。

DWORD实质上就是 unsigned long 数据类型,32位无符号整型。

HANDLE类型实质上是void,HANDLE定义为:
typedof PVOID HANDLE;
HANDLE实际上就是一个PVOID,那PVOID又是什么呢?
typeof void *PVOID;
PVOID就是指向void的指针。
所有的Windows数据类型都是通过这种方式在SDK的头文件中进行定义的,它们都是来源于标准C的

免责声明:文章转载自《C++常用数据类型和Windows常见数据类型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker学习以及镜像制作流程Sql Server 数据迁移问题的解决下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

c++ 开源日志库选择

liblogger 待选为 glog、log4cplus、log4cpp、log4cxx 目前准备使用glog,使用方便,性能也不错,待进一步试验,如果有不能满足的功能就转用 log4cplus,功能很全面,不过稍复杂些。 其它两个都是三年前就没更新,没好感,暂不准备使用。 1.log4cplus 最新版本:1.1.0 2012-03-11 下载地址:ht...

[转]天龙八部服务器端Lua脚本系统

一、Lua脚本功能接口 1. LuaInterface.h/.cpp声明和实现LuaInterface。 LuaInterface成员如下: //脚本引擎 FoxLuaScriptmLua ; //注册器 LuaCFuncRegistermFuncRegister; //场景关联 Scene*mOwner; //已经读取的脚本表 IDTablem_Sc...

Linux-c给线程取名字

https://blog.csdn.net/jasonchen_gbd/article/details/51308638 1 #define wtm_set_thread_name(n) ({ 2 char tname[THREAD_NAME_LEN + 1] = ""; 3 if (strlen(n) > THREAD_N...

从 C++ 到 Qt(命令行编译)good

从 C++ 到 Qt 转载自:http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html Qt 是 C++ 的库,Qt在ansi C++ 的基础上进行了一点扩展。 但国内似乎比较浮躁,学Qt的很多连基本的C++如何编译似乎都不太清楚。本文舍弃IDE或qmake、cmake等工具的...

Mac 终端编译运行 C++

1.在编辑器中写好C++代码 2.打开终端打开文件对应的地址 3.用g++命令来编译.cpp文件 4.用./文件名来运行 观察文件的目录可发现 1 g++ 源文件名  编译源文件,产生a.out 2 ./文件名    运行 例如:./a.out <输入文件名 > 输出文件名...

C++ XML解析之tinyXML

最近使用TinyXML进行C++ XML解析,感觉使用起来比较简单,很容易上手,本文给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成。TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很...