【发布时间】:2013-10-22 22:44:33
【问题描述】:
#include <iostream>
int main() {
char* chars = new char[4];
for(int i = 0; i < 4; ++i)
{
chars[i] = 'a';
}
std::cout << chars;
return 0;
}
那段代码可以正常工作。标准输出说
aaaa
然而,改变
chars[i] = 'a';
到
*chars++ = 'a';
或
*(chars++) = 'a';
使标准输出为空,标准错误中没有任何内容。这是怎么回事?我认为 [] 只是 *pointer 的语法糖。
【问题讨论】:
-
应该是
(*chars)++。 -
它最等同于
*(chars + i),但无论哪种方式,代码都有未定义的行为。 -
将其更改为 (*chars)++ 会给我一个错误左值“需要作为赋值的左操作数”
标签: c++ arrays variable-assignment