全局变量的值为什么要变? 我在头文件中定义了LPCTSTR 变量,不知为什么在其他文件中访问时内容发生的变化(我只对它做了一次操作)如果定义成'char* const' 就不能对其进行操作了。请问我该怎么办? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.char* const str :表明是你的指针是一个常量,这个指针指向一个字符串char* const str = new char[100];strcpy(str,"hello"); // 正确char* const str2 = new char[100];strcpy(str2,"world");str = str2 // 错误! 因为str是常量2. const char* str : 表明你的指针指向的是常量const char* str = new char[100];strcpy(str,"hello");str[0] = 't'; // 错误,因为指针指向的是常量3. const char* const str: 表明你指针是常量,指向的内容也是常量。LPCTSTR : L--long P---Point C---Const STR:string看名字就知道是一个常量指针了。 const char* p; // non-const pointer, const datachar* const p; // const pointer, non-const dataconst char * cosnt p; // const pointer, const data 把他定一成static类型就行了,如static int i;这样应用程序给这个变量在全局开辟一个固定地址,这样就不会随意改变了,除非在你的局部有同名的变量. 你的问题阐述的不是太清楚,我不知道你对全局变量进行了什么操作,我只能就我的理解说一些。 全局变量(或外部变量)的作用域为从变量的定义处开始,到本程序的文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。编译时将外部变量分配到静态存储区。在其他文件(没有定义全局变量)或定义点之前想引用外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。全局变量具有“记忆”功能,即在整个程序结束之前,不释放内存,它保存着最近一次执行的结果,整个程序结束之后,释放内存(释放执行结果)。下一次执行时,又保持初始状态。 不知道你是否按上述方法定义和操作全局变量。 我是按你所描述的方法定义的!我对于变量进行了一次赋值 LPCTSTR g_UserCode;//全局 _bstr_t p_Sql; //局部 ... p_Sql = e_Recordset->GetCollect("fcode").bstrVal; g_UserCode = p_Sql; //我的这种操作对吗?,直接赋给g_UserCode会错??这是在开始时赋的数值,以后就没有动过了。我看了一下,变量的指针没有变,指针里的值变了,而且每次运行指针里的值都不同??? 把一个局部指针变量赋给一个全局变量有什么意义? 那个_bstr_t p_Sql一出作用域就被干掉了,这时g_UserCode指向一处"你说是什么"的区域. e_Recordset->GetCollect("fcode").bstrVal 的值怎么样才能直接赋给LPCTSTR?我原来是打算把p_Sql当成一个中转的。 试试看:TCHAR g_UserCode[256];...lstrcpy(g_UserCode,(LPTSTR)(e_Recordset->GetCollect("fcode").bstrVal)); 呵呵,LPCTSTR只是一个指针,当然不能直接使用了如Zark(金陵五月) 所说的,定义一个数组,或者使用前 g_UserCode = new TCHAR[256];然后,将值拷贝进来才行啊如果用MFC的话,用CString岂不是更方便 g_UserCode =(LPCTSTR) e_Recordset->GetCollect("fcode").bstrVal; 多线程问题 多文档中的GDI+双缓冲的实现,求例子 为什么端口总是变来变去~~~~烦死了 如何判断指针非法? 在Visual C++ 2005里新建了一个对话框程序,在2003的操作系统上怎么没有办法运行? 有了解杭州三汇软件的朋友吗?能进来一下吗? 急求救!!!! 哪位有输入法的源程序(vc6.0可以编译的)可否给俺发一份? 望高手推荐几本入门教程 为什么宏那么讨厌呢,好烦人啊 请问:VC工程中的*.NCB文件是干什么的?我修改了DLL的关联关系,以为会改掉*.dsp文件,结果发现只有*.nbc文件发生改变,奇怪,谢谢 请高手帮忙:在COM中使用事件的问题
strcpy(str,"hello"); // 正确char* const str2 = new char[100];
strcpy(str2,"world");str = str2 // 错误! 因为str是常量2. const char* str : 表明你的指针指向的是常量
const char* str = new char[100];
strcpy(str,"hello");
str[0] = 't'; // 错误,因为指针指向的是常量3. const char* const str: 表明你指针是常量,指向的内容也是常量。
LPCTSTR : L--long P---Point C---Const STR:string
看名字就知道是一个常量指针了。
char* const p; // const pointer, non-const data
const char * cosnt p; // const pointer, const data
不知道你是否按上述方法定义和操作全局变量。
LPCTSTR g_UserCode;//全局
_bstr_t p_Sql; //局部
...
p_Sql = e_Recordset->GetCollect("fcode").bstrVal;
g_UserCode = p_Sql; //我的这种操作对吗?,直接赋给g_UserCode会错??这是在开始时赋的数值,以后就没有动过了。
我看了一下,变量的指针没有变,指针里的值变了,而且每次运行指针里的值都不同???
e_Recordset->GetCollect("fcode").bstrVal 的值怎么样才能直接赋给LPCTSTR?我原来是打算把p_Sql当成一个中转的。
lstrcpy(g_UserCode,(LPTSTR)(e_Recordset->GetCollect("fcode").bstrVal));
g_UserCode = new TCHAR[256];
然后,将值拷贝进来才行啊如果用MFC的话,用CString岂不是更方便
g_UserCode =(LPCTSTR) e_Recordset->GetCollect("fcode").bstrVal;