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

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

DDD
DDD원래의
2024-12-17 19:56:11649검색

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

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

프로그래밍에서 변수는 포인터 또는 배열이 될 수 있습니다. 변수를 선언할 때 포인터와 배열의 구문이 다릅니다. 데이터를 올바르게 조작하려면 둘 사이의 차이점을 이해하는 것이 중요합니다.

char a[] = "string";

이 코드 줄은 큰 문자 배열을 생성합니다. null 종결자와 함께 문자열 "string"을 저장하기에 충분합니다. 배열 "a"는 문자열 "string"의 요소로 초기화됩니다. 배열은 나중에 수정될 수 있으며 그 크기는 컴파일 타임에 알려지므로 "sizeof" 연산자를 사용하여 길이를 결정할 수 있습니다.

char *p = "string";

이 코드 줄은 문자열 "string"의 주소를 가리키는 "p"라는 포인터를 생성합니다. 포인터 "p"는 수정할 수 없지만 포인터가 가리키는 문자열은 수정할 수 있으므로 정의되지 않은 동작이 발생합니다.

비교:

  • 저장: 배열은 연속적인 메모리 공간을 차지하는 반면 포인터는 메모리 주소를 저장합니다. 위치.
  • 수정: 배열을 사용하면 요소를 수정할 수 있지만 문자열을 가리키는 포인터는 읽기 전용 메모리에 있는 경우가 많으므로 수정하면 안 됩니다.
  • 크기: 배열의 크기는 고정되어 있으며 컴파일 타임에 결정됩니다. 반면 포인터가 가리키는 문자열의 크기는 다음을 사용하여 결정해야 합니다. "sizeof"는 포인터 자체의 크기를 반환하므로 "strlen()"과 같은 함수입니다.
  • 사용법: 수정해야 하는 데이터에는 배열을 사용하고, 상수인 데이터에는 포인터를 사용하세요. 변경해서는 안 됩니다.

참고: 질문의 예에는 다음과 같이 오타가 포함되어 있습니다. "?" 이 컨텍스트에서는 유효한 연산자가 아닙니다. 의도된 질문은 배열과 포인터의 차이점에 관한 것으로 추정됩니다.

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

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