char *aStr[6];
aStr[0] = "str1";
String의 배열 6개를 선언하고 배열의 첫번째요소를 초기화하는데 에러가 나네요. 제가 뭘 착각한건지? 위에 코드가 뭐 틀렸나요?
"str1"의 형은 const char[5]입니다. 따라서 그 내용은 변경할 수 없습니다. 엄밀히 따지면 aStr은 const char* aStr[6]로 선언이 되어야 맞는데 string literal을 char*로 변환하는 것만은 특별히 허용됩니다. (그러나 이 변환도 deprecated임을 유념하시기 바랍니다.) 그러나 그 외의 경우 const를 non-const로 변환하는 것은 에러입니다.
const char array[5] = "str1"; char* aStr[6]; aStr[0] = array; // error
aStr[0][0] = 'S';
이런 식으로요. 결론적으로 const char* aStr[6]로 선언한 후에 컴파일 에러가 나는 부분을 살펴보시면 되겠습니다. 선지자 Scott Meyers는 "(에러가 날 거라면) 런타임 에러보다는 컴파일 에러가 나는 편이 낫다"고 말씀하셨습니다. :)
질문하신 분께서 실행하신 코드는 아무런 문제가 없지 않나요?
6개의 첨자를 갖는 배열을 생성하셨고.... (char *aStr[6];) 첫번째 배열 요소에 "str1" 문자열의 시작 주소를 넣으셨으니까요.... (aStr[0] = "str";)
gcc 3.3.4 에서 해보니까 아무런 문제없이 실행되던데요?
#include <stdio.h> int main() { char *aStr[6]; aStr[0] = "str1"; puts(aStr[0]); return 0; }
혹시 제가 틀린거라면 답변 꼭 달아주세요!!
작은 것들, 사소한 것들을 소중히 여기고, 항상 최선을 다하는 멋진 사람이 되고 싶다. 그들이 나에게 일깨워준 것처럼, 그들 자신이 얼마나 소중한 존재인지 알 수 있도록 도와주는 그런 좋은 사람이 되고 싶다
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
"str1"의 형은 const char[5]입니다. 따라서 그 내용은 변
"str1"의 형은 const char[5]입니다. 따라서 그 내용은 변경할 수 없습니다.
엄밀히 따지면 aStr은 const char* aStr[6]로 선언이 되어야 맞는데
string literal을 char*로 변환하는 것만은 특별히 허용됩니다.
(그러나 이 변환도 deprecated임을 유념하시기 바랍니다.)
그러나 그 외의 경우 const를 non-const로 변환하는 것은 에러입니다.
보여주신 코드는 컴파일은 되겠지만 aStr을 통해 문자열의 내용을
변경하려고 했다면 실행시에 에러가 날 것입니다. 즉
aStr[0][0] = 'S';
이런 식으로요.
결론적으로 const char* aStr[6]로 선언한 후에 컴파일 에러가 나는 부분을
살펴보시면 되겠습니다. 선지자 Scott Meyers는 "(에러가 날 거라면) 런타임
에러보다는 컴파일 에러가 나는 편이 낫다"고 말씀하셨습니다. :)
제가 아는게 없어서 그냥 넘어가려고 했었는데요.... (맞는거 틀
질문하신 분께서 실행하신 코드는 아무런 문제가 없지 않나요?
6개의 첨자를 갖는 배열을 생성하셨고.... (char *aStr[6];)
첫번째 배열 요소에 "str1" 문자열의 시작 주소를 넣으셨으니까요.... (aStr[0] = "str";)
gcc 3.3.4 에서 해보니까 아무런 문제없이 실행되던데요?
혹시 제가 틀린거라면 답변 꼭 달아주세요!!
작은 것들, 사소한 것들을 소중히 여기고,
항상 최선을 다하는 멋진 사람이 되고 싶다.
그들이 나에게 일깨워준 것처럼,
그들 자신이 얼마나 소중한 존재인지 알 수 있도록
도와주는 그런 좋은 사람이 되고 싶다
댓글 달기