>백엔드 개발 >C++ >C의 Char 배열과 Char 포인터 비교: 문자열에 `char a[]`와 `char *p`를 언제 사용해야 합니까?

C의 Char 배열과 Char 포인터 비교: 문자열에 `char a[]`와 `char *p`를 언제 사용해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-29 02:30:09757검색

Char Array vs. Char Pointer in C: When Should I Use `char a[]` vs. `char *p` for Strings?

문자열 선언의 배열 대 포인터: char a[] 대 char *p

C 프로그래밍에서는 선언하는 것 사이에 차이가 있습니다. 문자열 작업 시 문자 배열과 문자 포인터. 언급한 구문은 "char a[] = string;"입니다. 그리고 "char *p = 문자열;" 이 차이점을 보여줍니다.

배열 버전: char a[] = string

이 구문은 문자 배열 'a'를 선언합니다. 해당 크기는 수용할 수 있도록 크기가 자동으로 결정됩니다. 문자열 리터럴 "문자열". 배열은 null 종결자를 포함하여 문자열의 문자로 초기화됩니다. 배열의 크기는 컴파일 타임에 알려지므로 'sizeof' 연산자를 사용하여 배열의 길이를 결정할 수 있습니다. 나중에 배열의 문자를 수정할 수 있습니다.

포인터 버전: char *p = string

이 구문은 문자열을 가리키는 포인터 'p'를 선언합니다. 문자 그대로 "문자열". 이는 배열 버전보다 빠른 접근 방식이지만 'p'가 가리키는 문자는 메모리의 읽기 전용 부분에 있으므로 수정하는 것이 금지됩니다. 이러한 문자열 리터럴을 수정하면 정의되지 않은 동작이 발생합니다.

C의 지원 중단 및 모범 사례

C에서 'const' 키워드 없이 문자열 리터럴을 사용하는 것은 더 이상 지원되지 않습니다. 포인터 버전에 선호되는 선언은 다음과 같습니다.

const char *p = "string";

또한 포인터가 가리키는 문자열의 크기를 결정하기 위해 'sizeof'를 사용하지 마세요. 대신 'strlen()' 함수를 사용하세요.

배열과 포인터 중 선택

배열과 포인터 중 선택은 시나리오에 따라 다릅니다.

  • 수정하지 않으려는 문자열의 경우 포인터 버전을 사용하세요. 효율성.
  • 수정하려는 문자열의 경우 배열 버전을 사용하세요.

C 참고 사항

이러한 구별은 C에만 적용됩니다. C 에는 적용되지 않습니다. C에서는 문자열 리터럴을 'const' 없이 사용할 수 있지만 이를 수정하면 정의되지 않은 동작이 유지됩니다. C에서는 이러한 사용이 불법입니다.

위 내용은 C의 Char 배열과 Char 포인터 비교: 문자열에 `char a[]`와 `char *p`를 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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