我正在运行一些示例程序来重新熟悉C++,我遇到了以下问题。首先,下面是示例代码:
void print_string(const char * the_string)
{
cout << the_string << endl;
}
int main () {
print_string("What's up?");
}在上面的代码中,print_string的参数可以改为const char * const the_string。在这个问题上,哪个更正确?
我知道区别在于一个是指向常量字符的指针,而另一个是指向常量字符的常量指针。但是,为什么这两种方法都有效呢?它什么时候才是相关的?
发布于 2011-02-10 03:05:17
后者阻止您在print_string中修改the_string。它实际上在这里是合适的,但也许冗长会让开发人员望而却步。
char* the_string:我可以更改char the_string指向的位置,还可以修改它指向的char。
const char* the_string:我可以更改char the_string指向的位置,但不能修改它指向的char。
char* const the_string:我不能更改char the_string指向哪个char,但我可以修改它指向的the。
const char* const the_string:我不能更改char the_string指向的对象,也不能修改它指向的char。
发布于 2011-02-10 03:06:15
指向可变字符的
char *p;指向常量字符的
const char *p;指向可变字符的
char * const p;
const char * const p;
发布于 2011-02-10 03:07:24
const char * const的意思是指针和指针指向的数据都是常量, const!
const char *表示只有指针指向的数据是const。然而,指针本身并不是常量。
举例说明。
const char *p = "Nawaz";
p[2] = 'S'; //error, changing the const data!
p="Sarfaraz"; //okay, changing the non-const pointer.
const char * const p = "Nawaz";
p[2] = 'S'; //error, changing the const data!
p="Sarfaraz"; //error, changing the const pointer. https://stackoverflow.com/questions/4949254
复制相似问题