c++ - char* p="123"这句代码为什么是对的?
迷茫
迷茫 2017-04-17 15:18:09
0
7
1000

如题,C风格字符串,"123"不是const char *类型的常量么?为什么赋给一个普通指针是可以的呢?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(7)
伊谢尔伦

이렇게 하면 오류가 보고되지 않지만 p가 가리키는 123 문자열을 수정하려고 하면 메모리 액세스 위반이 발생합니다. "123"은 문자열 상수이므로 읽기 전용 저장 영역에 저장됩니다. const char*이 필요한 이유는 프로그래머가 실수로 123을 수정하는 것을 방지하기 위함입니다.

PHPzhong

초보자를 위한 답변
"123"은 const char 유형의 객체입니다. const char * p는 오른쪽에서 왼쪽으로 읽어야 합니다. 즉, p는 포인터이고 가리키는 객체는 const char 유형입니다. 이것은 정확하지 않습니다. 같은 방식으로 p가 가리키는 객체가 const char인 한 끝에 p = "456";을 추가하는 것이 옳습니다.

PHPzhong

char *p = "123";은 문자 배열을 나타냅니까? 문자열입니다

左手右手慢动作

-Wall을 컴파일하고 추가하면 경고가 표시됩니다.

으아악
大家讲道理

char *p = "123"; 실제로는 두 개의 프로세스입니다. 상수 영역에 문자열 공간을 할당하고, 문자 포인터 p를 선언하고, p가 문자열이 있는 메모리 공간을 가리킵니다. 즉시 정정해주세요

巴扎黑

C언어가 남긴 함정

左手右手慢动作

이것은 c와의 호환성을 위해 남겨둔 것입니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿