常量字符* vs 字符* (C++)
const char* vs char* (C++)
对于以下程序:
int DivZero(int, int, int);
int main()
{
try {
cout << DivZero(1,0,2) << endl;
}
catch(char* e)
{
cout << "Exception is thrown!" << endl;
cout << e << endl;
return 1;
}
return 0;
}
int DivZero(int a, int b, int c)
{
if( a <= 0 || b <= 0 || c <= 0)
throw "All parameters must be greater than 0.";
return b/c + a;
}
使用字符* e 将给出
在抛出 "char const*"的实例
根据C++异常处理,解决方案是改用 const char*。
函数(const char *(与函数(char *(的进一步读数说
"字符串"的类型是
char*', not
const char*'(我认为这是一个C讨论...
关于堆栈溢出字符*与常量字符*作为参数的其他阅读告诉我区别。但是他们都没有回答我的问题:
- 似乎字符*
- 和字符串*对字符数都有限制。我说的对吗?
- 如何将关键字 const 添加到 char* 消除该限制?我认为 const 的唯一目的是设置一个"不可修改"的标志。我知道 const char* e 的意思是"指向不可修改的字符类型的指针"。
该错误的解决方案是使用 const char* e。
甚至常量字符串* e 也不起作用。(只是为了测试...
谁能解释一下,请问?谢谢!
顺便说一下,我在Ubuntu上,由GCC编译,在Eclipse上。
您链接到的有关"字符串"的电子邮件是错误的(并且令人困惑(。
基本上:
char*
是指向无限字符数组的指针。传统上,如果这样的数组包含一组有效字符后跟一个