当我使用names
打印字符串时出现此错误,但在使用tempNames
时没有错误。
char* names[] = { "JIM",
"RAM",
"SAM",
0 };
int main(int argc, char *argv[])
{
char** tempNames = names ;
while(*names != 0)
std::cout << *names++ << std::endl ;
return 0;
}
*names
如何成为右值,而*tempNames
是左值。
答案 0 :(得分:0)
正如Bill Lynch在评论中解释的那样,您需要递增char* []
类型,但这是不允许的。 (如果您将其视为int []
类型,则会更容易。)当您分配到char**
时,您可以将其递增。
或者更好的基于C ++迭代器的解决方案C ++ 11:
char* names[] = { "JIM",
"RAM",
"SAM" };
int main(int argc, char *argv[])
{
char** tempNames = names ;
for(auto i = std::begin(names); i != std::end(names); ++i){
std::cout << *i << std::endl;
}
return 0;
}