> 백엔드 개발 > C++ > C와 C가 함수 서명에서 배열 길이를 무시하는 이유는 무엇입니까?

C와 C가 함수 서명에서 배열 길이를 무시하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-16 12:23:12
원래의
935명이 탐색했습니다.

Why Do C and C   Ignore Array Lengths in Function Signatures?

C 및 C의 함수에 배열 전달

질문:

C와 C를 수행하는 이유 C 컴파일러는 int dis(char)와 같은 함수 서명에서 배열 길이 선언을 허용합니다. a[1]), 시행되지 않을 때?

답변:

C 및 C에서 배열을 함수에 전달하는 데 사용되는 구문은 다음과 같은 역사적 기이함을 허용합니다. 배열 자체 대신 배열의 첫 번째 요소에 대한 포인터 전달

상세 설명:

C 및 C에서는 배열이 함수 참조로 전달되지 않습니다. 대신 배열의 첫 번째 요소에 대한 포인터가 전달됩니다. 이는 함수 시그니처의 [] 표기가 실제로 컴파일러에 의해 무시된다는 것을 의미합니다.

의미:

이 동작은 마치 배열은 참조로 전달되지만 실제로는 포인터만 전달됩니다. 또한 함수 시그니처에서 배열의 길이를 확인할 수 없으므로 가변 길이 배열 작업이 어려울 수 있습니다.

역사적 관점:

이 구문을 허용하기로 결정한 것은 배열을 함수에 전달하는 편리한 방법을 제공하기 위한 방법으로 1970년대에 이루어졌습니다. 그러나 이후 혼란과 잠재적인 보안 취약점이 발생했습니다. 최신 프로그래밍에서는 이 구문을 사용하지 않고 대신 포인터를 사용하여 참조로 배열을 전달하는 것이 좋습니다.

위 내용은 C와 C가 함수 서명에서 배열 길이를 무시하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿