C++所有数据类型
发布网友
发布时间:2022-05-27 13:05
我来回答
共3个回答
热心网友
时间:2023-10-24 07:15
你说的这是MFC的数据类型。MFC中常见的数据类型如下:
1、Win32程序共同使用的数据类型:
BOOL:布尔值,取值为TRUE or FALSE
BSTR:32-bit 字符指针
BYTE:8-bit整数,未带正负号
COLORREF:32-bit数值,代表一个颜色值
DWORD:32-bit整数,未带正负号
LONG:32-bit整数,带正负号
LPARAM:32-bit整数,作为窗口函数或callback函数的一个参数
LPCSTR:32-bit指针,指向一个常数字符串
LPSTR:32-bit指针,指向一个字符串
LPCTSTR:32-bit指针,指向一个常数字符串,此字符串可以移植到Unicode和DBCS
LPTSTR:32-bit指针,指向一个字符串,此字符串可以移植到Unicode和DBCS
LPVOID:32-bit指针,指向一个未指定类型的数据
LPRESULT:32-bit数值,作为窗口函数或callback函数的返回值
UINT:在Win16中是一个16-bit 未带正负号整数,在Win32中是一个32-bit 未带 正负号整数,
WNDPROC:32-bit指针,指向一个窗口函数
WORD:16-bit 整数 ,未带正负号
WPARAM:窗口函数或callback函数的一个参数,在Win16中是16-bit,在Win32中是32-bit
2、MFC独特的数据类型
POSITION:一个数值,代表collection对象(例如数组或链表)中的元素位置,常 用于MFC collection classes(即数据处理类,如CArray)
LPCRECT:32-bit指针,指向一个不变的RECT结构
热心网友
时间:2023-10-24 07:15
ATOM 原子(原子表中的一个字符串的参考)
BOOL 布尔变量
BOOLEAN 布尔变量
BYTE 字节(8位)
CCHAR Windows字符
CHAR Windows字符
COLORREF 红、绿、蓝(RGB)彩色值(32位)
Const 变量,该变量的值在执行期间保持为常量
CRITICAL_SECTION 临界段对象
CTRYID 国名标识符
DLGPROC 指向一个对话框过程的指针
DWORD 双字(32位)
ENHMFENUMPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举增强的元文件记录
ENUMRESLANGPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举资源语言。
ENUMRESNAMEPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举资源名称。
ENUMRESTYPEPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举资源类型。
FARPROC 指向一个回调函数的指针
FLOAT 浮点变量
FMORDER 32位字体映射值的数组
FONTENUMPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举字体
GOBJENUMPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举图形设备接口(GDI)对象
HACCEL 加速键表句柄
HANDLE 对象的句柄
HBITMAP 位图句柄
HBRUSH 画刷句柄
HCONV 动态数据交换(DDE)会话句柄
HCONVLIST DDE会话句柄
HCURSOR 光标句柄
HDC 设备描述表(DC)句柄
HDDEDATA DDE数据句柄
HDLG 对话框句柄
HDWP 延期窗口位置结构句柄
HENHMETAFILE 增强原文件句柄
HFILE 文件句柄
HFONT 字体句柄
HGDIOBJ GDI对象句柄
HGLOBAL 全局内存块句柄
HHOOK 钩子句柄
HICON 图标句柄
HINSTANCE 实例句柄
HKEY 登记关键字句柄
HLOCAL 局部内存块句柄
HMEMU 菜单句柄
HMETAFILE 元文件句柄
HMIDIIN 乐器的数字化接口(MIDI)输入文件句柄
HMIDIOUT MIDI输出文件句柄
HMMIO 文件句柄
HOOKPROC 指向一个应用程序定义的钩子函数的指针
HPALETTE 调色板句柄
HPEN 画笔句柄
HRGN 域句柄
HRSRC 资源句柄
HSZ DDE字符串句柄
HWAVEIN 波形输入文件句柄
HWAVEOUT 波形输出文件句柄
HWINSTA 工作站句柄
HWND 窗口句柄
INT 符号整数
LANGID 语言标识符
LCID 所在国(Locale)标识符
LCTYPE 所在国类型
LINEDDAPROC 指向一个回调函数的指针,该回调函数处理行坐标
LONG 32位符号整数
LP 指向一个以"NULL"结束的Unicode(TM)字符串的指针
LPARAM 32位消息参数
LPBOOL 指向一个布尔变量的指针
LPBYTE 指向一个字节的指针
LPCCH 指向一个Windows字符常量的指针
LPCCHOOKPROC 指向一个应用程序定义的钩子函数的指针
LPCFHOOLPROC 指向一个应用程序定义的钩子函数的指针
LPCH 指向一个Windows字符的指针
LPCOLORREF 指向一个COLORREF值的指针
LPCRITICAL_SECTION 指向一个临界段对象的指针
LPCSTR 指向一个以"NULL"结束的WINDOWS字符串常量的指针
LPCTSTR 指向一个以"NULL"结束的Unicode或Windows字符串常量的指针
LPCWCH 指向一个以"NULL"指向一个以"NULL"结束的Unicode字符常量的指针
LPCWSTR 指向一个以"NULL"指向一个以"NULL"结束的Unicode字符串常量的指针
LPDWORD 指向一个无符号双字(32位)的指针
LPFRHOOLPROC 指向一个应用程序定义的钩子函数的指针
LPHANDLE 指向一个句柄的指针
LOHANDLER_FUNCTION 指向一个处理程序函数的指针
LPHWAVEIN 指向一个波形输入文件句柄的指针
LPHWAVEOUT 指向一个波形输出文件句柄的指针
LPINT 指向一个符号整数的指针
LPLONG 指向一个符号长整数(32位)的指针
LPOFNHOOKPROC 指向一个应用程序定义的钩子函数的指针
LPPRINTHOOKPROC 指向一个应用程序定义的钩子函数的指针
LPSETUPHOOKPROC 指向一个应用程序定义的钩子函数的指针
LPTSTR 指向一个以NULL结束的Unicode或Windows字符串的指针
LRESULT 消息处理的符号结果
LPVOID 指向任何类型的指针
LPWSTR 指向一个以"NULL"结束的Unicode字符串的指针
LUID 局部唯一的标识符
MCIDEVICEID 媒体控制接口(MCI)设备标识符
MFENUMPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举元文件记录
MMRESULT 多媒体消息的处理结果
NPSTR 指向一个以"NULL"结束的Windows字符串的指针
NWPSTR 指向一个以"NULL"结束的Unicode字符串的指针
PBOOL 指向一个布尔变量的指针
PBYTE 指向一个字节的指针
PCCH 指向一个Windows字符常量的指针
PCH 指向一个Windows字符的指针
PCHAR 指向一个Windows字符的指针
PCRITICAL_SECTION 指向一个临界段对象的指针
PCSTR 指向一个以"NULL"结束的Windows字符串常量的指针
PCWCH 指向一个Unicode字符常量的指针
PCWSTR 指向一个以"NULL"结束的Unicode字符串常量的指针
PDWORD 指向一个无符号双字的指针
PFLOAT 指向一个浮点变量的指针
PFNCALLBACK 指向一个回调函数的指针
PHANDLE 指向一个句柄的指针
PHANDLER_ROUTINE 指向一个处理程序的指针
PHKEY 指向一个登记关键字的指针
PINT 指向一个符号整数的指针
PLONG 指向一个符号长整数的指针
PLUID 指向一个局部唯一的表示符(LUID)的指针
PROPENUMPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举窗口特征
PSHORT 指向一个符号短整数的指针
PSID 指向一个加密标识符(SID)的指针
PSTR 指向一个以"NULL"结束的Windows字符串的指针
PSZ 指向一个以"NULL"结束的Windows字符串的指针
PTCH 指向一个Windows或Unicode字符的指针
PTCHAR 指向一个Windows或Unicode字符的指针
PTSTR 指向一个以"NULL"结束的Windows或Unicode字符串的指针
PUCHAR 指向一个无符号Windows字符的指针
PUINT 指向一个无符号整数的指针
PULONG 指向一个无符号长整数的指针
PUSHORT 指向一个无符号短整数的指针
PVOID 指向任何类型的指针
PWCH 指向一个Unicode字符的指针
PWCHAR 指向一个Unicode字符的指针
PWORD 指向一个无符号字的指针
PWSTR 指向一个以"NULL"结束的Unicode字符串的指针
REGSAM 登记关键字的加密掩码
SC_HANDLE 服务句柄
SERVICE_STATUS_HANDLE 服务状态值句柄
SHORT 短整数
SPHANDLE 指向一个句柄的指针
TCHAR Unicode或Windows字符
TIMERPROC 指向一个应用程序定义的定时器回调函数的指针
UCHAR 无符号Windows字符
UINT 无符号整数
ULONG 无符号长整数
USHORT 无符号短整数
VOID 任何类型
WCHAR Unicode字符
WNDENUMPROC 指向一个应用程序定义的回调函数的指针,该回调函数枚举窗口
WNDPROC 指向一个应用程序定义的窗口过程的指针
WORD 无符号字(16位)
WPARAM 32位消息参数
YIELDPROC 指向一个输出回调函数的指针
热心网友
时间:2023-10-24 07:16
常量
const int MAX_VASLUE=10;
强制修改常量值
const int MAX_VASLUE=10;
*(int*)&MAX_VASLUE=5;
int var=*(int*)&MAX_VASLUE;
printf("%d ",var); // 5
printf("%d ",*(int*)&MAX_VASLUE); // 5
printf("%d ",MAX_VASLUE); // 10变量
int min=0;
char* pch;
int min(10);
int min=int(); // 初始化 min 为 0
double max=double(); // 初始化 max 为 0.0变量的存储类型
(1)extern 只申明而不定义变量
表明该变量在别的地方已经定义过了,在这里要使用那个变量.
文件(1)
extern int var; // 在该文件中就可以访问全局变量var
文件(2)
int var=0; // 全局变量var
(2)static 静态变量
局部静态变量
可以认为局部静态变量是一个在函数调用后保留其值的局部变量
void TestStaticVar()
{
static int slocal = 10; //定义一个局部静态变量
printf("%d ",slocal); //输出变量
slocal++; //自加1
}
void main()
{
//连续3次调用TestStaticVar
TestStaticVar(); // 10
TestStaticVar(); // 11
TestStaticVar(); // 12
}
*局部静态变量slocal只初始化一次
全局静态变量
与局部静态变量比较就是作用域不同
可以认为全局静态变量只是半个全局变量(不能被其他文件共享)
(3)register
表示变量被放置在CPU的寄存器中
register只能用于局部变量或作为函数的形参,不能定义为全局的register变量.
register int slocal=10;
(4)auto
静态存储:全局变量,静态变量
动态存储:普通局部变量
auto便是变量将被动态存储,默认的局部变量都是auto变量枚举类型
enum InstanceState{CLOSE,OPEN,MOUNT,UNMOUNT};
enum InstanceState{CLOSE=1,OPEN,MOUNT=4,UNMOUNT};
OPEN=2,UNMOUNT=5;结构体类型
const int MAX_CHAR=128;
struct Student
{
char name[MAX_CHAR];
char sex[MAX_CHAR];
unsigned int age;
char addr[MAX_CHAR];
};
Student stdnt; //定义一个结构体变量
stdnt.age = 10; //为结构体成员赋值
Student another; //再次定义一个结构体变量
another = stdnt; //直接为结构体变量赋值
printf("%d ",another.age); //输出结构体成员信息struct fieldzone
{
unsigned char:4; // 占4位半个字节
unsigned char memTwo:2; // 占2位
unsigned char memThree:1; // 占1位
};公用体类型
union unType{
char cdata;
int idata;
};
公用体是共享同一个内存地址,
通常一次只需要使用一个成员,公用体变量长度是根据公用体成员中占用最多内存空间的变量分配空间.pair类型
可以使两个相同或不同类型的变量关联在一起
#include //引用头文件
using namespace std; //使用命名空间
void main()
{
pair< int,char* > list(10,"C++"); //定义pair类型变量list
if (list.first==10 && list.second =="C++") //访问list中的成员
{
printf("I love C++ language! ");
}
}指针类型
指针用来存放变量的地址
int ivar=10;
int* pi; // 定义整型指针变量
pi=&ivar; // 将其赋值为ivar的地址
int* pvar=&ivar; // 定义整型指针变量,将其初始化为ivar的地址
在指针变量前使用"*"运算符,就可以直接访问变量的数据
int ivar = 10; // 定义整型变量
int* pvar = &ivar; // 定义整型指针变量,将其初始为ivar的地址
*pvar = 8; // 修改指针变量指向的地址的值
printf("ivar = %d\n",ivar); // 输出变量值
printf("pvar = %d\n",*pvar);// 输出指针变量值int n = 10;
int *p = &n; // 不管是C还是C++这句都是对的
int *p = n; // 不管是C还是C++这句都是错的!!!类型不匹配
int iarray[5]={1,2,3,4,5};
int* pavr=iarray; // 定义一个整型指针变量,将其指向数组中的第一个元素(同int* pvar=&iarray[0];)
使用指针变量输出数组
int iarray[5] = {1,2,3,4,5}; // 定义一个数组,并进行初始化
int* pvar = iarray; // 定义一个指针变量,将其指向数组首地址
for(int i=0; i<5;i++) // 循环语句,用于遍历数组元素
{
printf("数组元素[%d]= %d\n",i,*pvar); // 利用指针变量输出数组元素
pvar = pvar + 1; // 移动指针,使其指向下一个元素
}
利用指针数组存储数据
int* parray[5]; // 定义一个指针数组
int iarray[5] = {9,8,7,6,5}; // 定义一个整行数组
for(int i=0; i<5;i++) // for循环
{
parray[i] = & iarray[i]; // 为指针数组中的元素赋值
printf("数组元素[%d]= %d\n",i,*parray[i]); // 输出指针数组元素中的数据值
}
修改指针常量的地址
int ivar=10; // 定义一个整型变量
const int* pvar=&ivar; // 定义一个指针常量,对其进行初始化
//*pvar=20; // 错误的代码,不能修改指针常量的数据
int inum=5; // 再次定义一个整型变量
pvar=&inum; // 修改指针常量指向的地址
修改指向整型的常量指针的值
int ivar=10; // 定义一个整型常量
int* const pvar=&ivar; // 定义一个指向整型常量的指针
*pvar=20; // 修改指针指向的数据
int inum=5; // 定义一个整型变量
//pvar=&inum; // 错误的代码,不能够修改常量指针指向的地址
两个const关键字
int ivar=10;
const int* const pvar=&ivar;
// *pvar=20; // 非法代码,不能够修改pvar指向的数据
int inum=5; // 定义一个整型变量
// pvar=&inum; // 非法代码,不能够修改pvar指向的地址引用类型
int ivar=10; // 定义一个整型变量
int& rvar=ivar; // 定义一个引用对象
rvar = 5; // 设置引用对象数据
printf("ivar = %d\n",ivar); // 输出变量ivar 5
printf("rvar = %d\n",rvar); // 输出变量rvar 5
printf("ivar的地址 = %d\n",&ivar); // 输出整型变量的地址 (地址相同)
printf("rvar的地址 = %d\n",&rvar); // 输出"引用对象"的地址 (地址相同)
程序中如果对引用对象进行取地址,返回的将是目标的地址,因为引用是目标的代名词typedef 自定义类型(重命名数据类型)
typedef unsigned int UInt;
UInt ivar=10;