현재 char 및 string 데이터 유형을 분석 중입니다.문자열 포인터에 값 할당
문자열에 대한char value = 'a';
char value1[] = "Good";
char* value2 = "Good";
,
string strValue = "Good";
string strVal[3] = {"Good","Better","Best"};
을하지만 할당은 아래의 컴파일 오류가 발생합니다 : char
데이터 유형에 대해 냈다 다음 코드가 좋은 보유 그래서
"error: scalar object strPtr requires one element in initializer"
string* strPtr = {"Good","Better","Best"}
을, 처음에 string*
이상의 값을 할당하는 방법은 무엇입니까?
덕분에, Udhai
'char * value2 = "좋지 않음"; - 언어 디자인의 오류를 통해 허용되지만 허용되지 않아야하며 더 이상 사용되지 않습니다. 문자열 리터럴은 읽기 전용 메모리에 상주하며,이 명령문에서 비 const 포인터를 첫 번째 요소에 할당합니다. 따라서 문자열을 수정하려고하면 컴파일되지만 런타임에는 작동하지 않습니다. 그 나쁜. –
포인터가 주소를 가리 킵니다. 권리? 따라서 값을 포인터에 "할당"할 때는 포인터를 가리키는 주소의 데이터로 실제로 작업 할 수 있도록 포인터의 값을 참조 해제해야합니다. 참조가 아닌 포인터에 값을 지정하려고하면 가리키는 데이터의 주소를 변경하려고한다는 것입니다. 'string * '에 지정하는 것은 이미 정의되었거나 최소한 선언 된'string'입니다. – ChiefTwoPencils
그동안 수정되지 않았습니까? 나는 요즘 (C++ 0x 또는 어쩌면 표준의 이후 버전) 문자열 리터럴이 항상 const char * 형식을 가지고 있다고 생각했습니다. (컴파일 오류가 발생합니다). – Axel