I은 다음 두 선언 및 초기화에 주소 문자열을 인쇄하고 charArray 및 strPtr. 문제는 "왜?"CHAR * 변수 주소
인쇄 :
printf("%10s%40s%20p\n", "strPtr", strPtr, &(*strPtr));
printf("%10s%40s%20p\n", "charArray", charArray, charArray);
출력 :
strPtr This is a string, made on the fly. 0x400880
charArray Chars in a char array variable. 0x7fff12d5ed30
서로 다른 주소를, 당신이 보는대로이 있습니다 : 0x400880 대 0x7fff12d5ed30
이 주소를 사용하기 전에 선언 된 변수의 나머지 charArray와 같습니다.
"주소가 너무 다른 이유는 무엇입니까?" 도움을 주셔서 감사합니다.
몇 가지 조언; 예를 들어'const char * str = "string";'처럼 문자열 리터럴에 대한 포인터를 선언하는 것이 더 유리합니다. 이렇게하면 문자열 리터럴을 수정하려고하는 정의되지 않은 동작을 방지하는 데 도움이됩니다. – dreamlax
@dreamlax +1 견고한 조언 – Gemini14