나는 다음과 같은 C++ 코드에 대한 조금 혼란 스러워요 :초기화
#include <iostream>
using namespace std;
void test(const string& str)
{
static const char * const c = str.c_str();
cout << c << endl;
}
int main(int argc, char* argv[])
{
test("Hello");
test("Nooo");
return 0;
}
변수 c
이후 static
및 const
로 선언이 한 번만 초기화 할 수 있어야하고 초기 값을 유지 프로세스가 완료 될 때까지? 이 논리에 따르면, 나는 다음과 같은 출력 기다리고 있었다 :
Hello
Hello
을하지만 내가 가지고 : 변수 c
의 값이 두 기능 사이에 수정 된 이유
Hello
Nooo
당신이 명확하게 할 수조차 불구하고 호출 변수가 const
입니까?
사실 그것은 정의되지 않았습니다. ** Dereferencing ** 정의되지 않았습니다. 역 참조 할 때 항상 유효한 주소를 가지므로 유효한 프로그램입니다. – StoryTeller
@StoryTeller,'cout << c << endl;은 포인터를 역 참조합니다. –
@StoryTeller 출력 연산자는 역 참조를 사용합니다. –