다차원 배열을 전달하는 간단한 테스트 프로그램을 작성하고 있습니다. 나는 피 호출자 기능의 서명을 얻기 위해 고심하고있다.다차원 배열 전달에 도움주세요
코드는 내가 가진 :
void p(int (*s)[100], int n) { ... }
...
{
int s1[10][100], s2[10][1000];
p(s1, 100);
}
이 코드는 작업 표시하지만, 내가 의도하지 않습니다. 나는 값의 범위가 100 또는 1000인지 여부를 알지 못하지만 함수 서명을 사용하여 10 개의 포인터가 있음을 알아야한다. 첫 번째 시도로
:
void p(int (*s)[10], int n) // n = # elements in the range of the array
하고, 두 번째로는 :
void p(int **s, int n) // n = # of elements in the range of the array
그러나 아무 소용이
나는이 제대로 작동하려면 얻을 수가 있습니다. 나는 서명에서 100이나 1000을 하드 코드하고 싶지는 않지만 대신에 그것을 전달한다. 항상 10 개의 배열이 있다는 것을 명심해야한다.는 분명히, 나는 함수를 선언하지 않으려 :
void p(int *s1, int *s2, int *s3, ..., int *s10, int n)
참고로, 내가 a similar question에 대한 답변 찾고 있어요하지만 여전히 혼란.
또는 void p (int s [] [10], int n)' – outis
@outis : 확실히 맞습니다. 나는 원래 질문을 모방하기 때문에'int (* s) [10]'을 부분적으로 사용 했었고 또한 독자가 실제로 무엇이 사실인지에 대해 오도하고 있기 때문에'int [] [10] '와 같은 인자 선언을 개인적으로 피하는 경향이 있기 때문에 부분적으로 사용했습니다. 함수에 전달됩니다. –
감사합니다. 이것은 내가 원래 원했던 것을 시행하는 올바른 방법 인 것 같습니다. 유일한 문제는 전치 된 구조가 내 코드를 방해한다는 것입니다. 다차원 배열을 동적으로 구성하고 범위를 전달하는 것이 더 적절하고 이해하기 쉽다는 다른 대답이 나타납니다. – snap