2016-08-29 3 views
0
예를 들어

,C에서 문자열 리터럴을 가리키는 포인터를 정의하려고하면 어떻게됩니까?

char * first = "Hello World!"; 

내 질문

  1. 메모리에 저장된 문자열 리터럴입니까? 그렇지 않다면, first에 저장된 임의의 포인터 값의 일종이다

  2. (I 포인터 first 리터럴 문자열 "Hello World"의 inital 요소의 주소 추측이되어있는 경우)?

+3

1. 예. 2. 첫 번째 대답은 "예"이므로 Moot. –

+0

'포인터 저장 '이란 무엇을 의미합니까? –

+0

@RawN "정의"라는 단어가 더 적합하다고 생각합니다! – Jin

답변

2

예, 문자열 리터럴은 메모리에 저장됩니다. C 및 C++ 표준에서는 문자열 리터럴에 정적 저장 기간이 있다고 말합니다.이를 수정하려고 시도하면 정의되지 않은 동작이 발생하고 동일한 내용을 가진 여러 문자열 리터럴은 동일한 저장 영역을 공유 할 수도 있고 공유하지 않을 수도 있습니다.

3

예 리터럴 문자열이 보통 그것은 플랫폼에 따라 달라집니다 .rodata 섹션

1

에 저장된 메모리에 저장하고 있습니다 구현 정의을. 일반적으로 시스템에서 사용 가능한 경우읽기 전용 메모리로 이동합니다. 더 읽기 here.