>백엔드 개발 >C++ >`char a[] = 'string';`과 `char *p = 'string';`의 차이점은 무엇입니까?

`char a[] = 'string';`과 `char *p = 'string';`의 차이점은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-15 15:04:29763검색

What's the Difference Between `char a[] =

"char a[] = ?string?;"의 차이점 and "char *p = ?string?;"

면접관의 질문에 "?"와 같이 오타가 있습니다. 연산자가 의미상 유효하지 않습니다. 오타가 있다고 가정하면 의도한 질문을 해석할 수 있습니다.

"char a[] = "string";"의 차이점은 무엇입니까? 및 "char *p = "string";"?

배열과 포인터

이러한 선언의 주요 차이점은 생성하는 데이터 구조에 있습니다. :

  • 배열(문자 a[] = "string";"): 문자열 리터럴 "string"을 저장하는 문자 배열을 초기화합니다. null 종결자(' ')를 포함하여 여러 문자를 포함할 수 있습니다. 배열은 메모리에서 수정할 수 있습니다.
  • 포인터(char *p = "string";"): 문자열 리터럴 "string"이 있는 메모리 위치를 가리키는 포인터 변수 'p'를 초기화합니다. 저장되었습니다. 읽기 전용 문자열 리터럴을 가리키므로 수정할 수 없습니다.

주요 차이점

Feature Array Pointer
Data Type Character Array Character Pointer
Modificability Modifiable Immutable
Size Determination sizeof can be used strlen function must be used
Usage Used when the string content needs modification Used when the string content remains constant

사용 고려 사항

시나리오에 따라 올바른 데이터를 선택해야 합니다. 구조:

  • 문자열 내용을 조작하거나 수정해야 할 때 배열을 사용하세요.
  • 문자열 리터럴이나 저장된 데이터로 작업할 때와 같이 문자열 불변성이 중요한 경우 포인터를 사용하세요. 변경하면 안 됩니다.

표준 규정 준수

C에서는 "const" 키워드 없이 문자열 리터럴을 사용하는 것이 더 이상 사용되지 않습니다. 따라서 올바른 선언은 다음과 같습니다.

  • 배열: char a[] = const "string";")
  • 포인터: const char *p = "string";")

C 대 C 참고

이러한 개념은 C가 아닌 C에만 적용된다는 점을 명심하세요. C에서는 문자열 처리가 다르며 앞서 언급한 코드 구조는 문자열 조작에 사용되지 않습니다.

위 내용은 `char a[] = 'string';`과 `char *p = 'string';`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.