1 CreateWindow函数中的参数CW_USEDEAULT,CW的全称是什么?表示什么意思?USEDEAULT应该是使用默认的意思,那么前面那个CW呢?
2 字符串的本质是什么?比如“我是程序员”,它表示的是存储这段字符串的首地址即指针吗?
MessageBox( NULL, "Register Failed","Error", MB_OK );
MessageBox中第二个参数和第三个参数的类型都为指针,却直接用字符串来赋值。是不是“Register Falied"和"Error"都表示一个指针。
我把“”字符串理解为存储这段字符的内存的首地址,即指针。这样合理吗?高手指教。
2 字符串的本质是什么?比如“我是程序员”,它表示的是存储这段字符串的首地址即指针吗?
MessageBox( NULL, "Register Failed","Error", MB_OK );
MessageBox中第二个参数和第三个参数的类型都为指针,却直接用字符串来赋值。是不是“Register Falied"和"Error"都表示一个指针。
我把“”字符串理解为存储这段字符的内存的首地址,即指针。这样合理吗?高手指教。
2.我猜测你的疑问是既然是指针,这个字符串是如何销毁的
"Register Failed",这个双引号引起来的是“字符串字面值常量”,这类常量不可修改
MessageBox的第二个参数类似于LPCTSTR,我特意查了下这个意义
L是处理和兼容以前版本,解决历史遗留问题,没有什么实际意义
P代表指针
C代表常量
T代表宏就是_T(
STR是字符串
也就是说,LPCTSTR代表一个指向字符串字面值的常量
你上面使用的"Register Failed"这类字符串字面值常量数据是在栈中分配,自动释放
如果你改为
TCHAR* pStr = new TCHAR[100];
_tcscpy(pStr, _T("test"));MessageBox(NULL, pStr, pStr, MB_OK);
如果这样使用,数据在堆中分配,那就需要自己释放数据。