#include <iostream>
int main() {
char* chars = new char[4];
for(int i = 0; i < 4; ++i)
{
chars[i] = 'a';
}
std::cout << chars;
return 0;
}
코드 덩어리가 올바르게 작동합니다. 표준 출력은 표준 에러에 아무것도 빈배열 할당이 포인터 구문과 작동하지 않습니다.
chars[i] = 'a';
*(chars++) = 'a';
*chars++ = 'a';
또는
메이크업의 표준 출력을 변경하지만
aaaa
말했다. 무슨 일이야? 나는 []가 * 포인터에 대한 구문 론적 설탕이라고 생각했습니다.
'(* chars) ++'이어야합니다. – 0x499602D2
'* (chars + i)'와 가장 비슷하지만, 코드는 정의되지 않은 행동을합니다. – chris
(* chars) ++로 변경하면 "왼쪽 피연산자로 필요합니다."라는 오류가 발생합니다. –