문제:
C에서 int* 배열을 기대하는 함수에 다차원 C 스타일 배열을 전달하면 컴파일러 오류입니다.
이유:
int4와 같은 다차원 배열은 int* 유형의 포인터로 직접 변환할 수 없습니다. 이것이 바로 int입니다. arr[]은 함수에서 나타냅니다. 선언.
예:
#include<stdio.h> void print(int *arr[], int s1, int s2) { // ... } int main() { int a[4][4] = {{0}}; print(a, 4, 4); // Error in C++ }
C는 오류를 보고합니다.
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
해결책:
C와 C 모두에서 다차원 배열을 int**로 전달하는 것은 그렇지 않습니다. 유효한. 이를 효과적으로 달성하려면 다음 기술을 사용하여 배열을 포인터로 변환해야 합니다.
참고:
컴파일러 경고 무시 또는 구현 실패 적절한 변환으로 인해 정의되지 않은 동작과 예측할 수 없는 결과가 발생할 수 있습니다.
위 내용은 C에서 `int`가 작동할 것으로 기대하는 함수에 C 스타일 2D 배열을 전달하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!