2017-09-24 5 views
1

현재 프로그램에서 왜 이상한 문자를 출력하는지 알아 내려고하고 있습니다. 코드에 표시된 배열에 대해 선택한 문자를 출력하고 싶습니다. 그래도 괄호 표기법을 사용하고 싶지는 않습니다. 난 단지 나를 위해 혼란스럽게 만들고 포인터 산술 표기법을 사용하고 있습니다.포인터 연산 표기법

누구든지 해결 방법을 알고 있습니까? 내가

#include <iostream> 
using namespace std; 


int main(){ 


char *arr = new char[10]; 
*arr = 'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q'; 

// Show arr; 
for(int i = 0; i < 10; i++){ 
cout << *(arr +i) << endl; 
} 


delete[] arr; 


} 
+1

이 진술은 무엇이라고 생각하십니까? "* arr = 'A', 'K', 'U', 'E', B ','Z ','D ','O ','M ','Q '" – OldProgrammer

+0

배열 10 개의'char's 중 첫 번째'char' 값을 'Q'로 초기화하고 나머지 9 개의 문자를 임의로 초기화하지 못하여 무작위로 가비지를 포함시킨 다음 1 문자 q를 인쇄하려고했습니다. 임의 쓰레기. –

+0

@SamVarshavchik 첫 번째 요소는''A''로 설정됩니다. – melpomene

답변

0

built-in comma operator를 들어, *arr = 'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q';(*arr = 'A'), ('K'), ('U'), ...;으로 해석됩니다 어떤 도움을 주셔서 감사합니다, 정말 감사합니다; 따라서 배열의 첫 번째 요소 만 'A'에 할당하고 다른 요소는 전혀 초기화되지 않습니다. 당신이 할 수

char *arr = new char[10] {'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q'}; 

LIVE

+0

오, 고맙다. 내가 어떻게해야하는지 알고 싶었다. – Dany

0

귀하의 포인터 표기법

모든 요소를 ​​초기화 할 경우

은 괜찮습니다. 문제는 배열이 초기화되지 않았기 때문입니다.

*arr = 'A', 'K', 'U', 'E', 'B', 'Z', 'D', 'O', 'M', 'Q'; 최초의 양수인 'A'*arr에, 컴파일러는 이것에 대한 경고를 생성하지 않는 등, 다음 평가하고 멀리 'K'가 발생하고 평가하고 'U' 멀리 던져?

배열의 요소 1 ~ 9에는 절대로 값이 제공되지 않습니다.