"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C 및 C++에서 함수 서명의 배열 길이를 무시하는 이유는 무엇입니까?

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

2024년 12월 26일에 게시됨
검색:608

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년대에 이루어졌습니다. 그러나 이후 혼란과 잠재적인 보안 취약점이 발생했습니다. 최신 프로그래밍에서는 이 구문을 사용하지 않고 대신 포인터를 사용하여 참조로 배열을 전달하는 것이 좋습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3