배열 배열 배열을 어떻게 선언합니까? 배열에 s[]
이 있다고 가정 해보십시오. s[0]
은 다른 배열 a[]
을 포함하고 a[0]
은 배열 b[]
을 포함합니다. 포인터로 어떻게 할 수 있습니까?C 배열 배열 배열
답변
// b is an array of int. (N is some number.)
int b[N];
// a Option 0: a is an array of M arrays of N int. (M is some number.)
int a[M][N];
// a Option 1: a is an array of M pointers to int.
int *a[M];
a[0] = b;
// Other elements of a must also be assigned in some way.
// s Option 0: s is an array of L arrays of M arrays of N int. (L is some number.)
int s[L][M][N];
// s Option 1: s is an array of L arrays of M pointers to int.
int *s[L][M];
s[0][0] = b;
// Other elements of s must also be assigned in some way.
// s Option 2: s is an array of L pointers to arrays of N int.
int (*s[L])[N];
s[0] = a; // Can use a from a Option 0, not a from a Option 1.
// Other elements of s must also be assigned in some way.
// s Option 3: s is an array of L pointers to pointers to int.
int **s[L];
s[0] = a; // Can use a from a Option 1, not a from a Option 0.
// Other elements of s must also be assigned in some way.
각 개체가 배열 대신 최상위 수준의 포인터 인 옵션도 있습니다. 나는 그것들을 보여주지 않았다. 포인터를 가리키는 포인터를 정의해야합니다.
간단한 접근법.
int length = 10;
int b[5] = {0,1,2,5,4};
int c[7] = {1,2,3,4,5,6,7};
int** s = malloc(sizeof(int*) * length);
s[1] = b;
s[2] = c;
등등 ...
이 예에서는 2 층이다. 포인터 s
을 ***s
으로 만들고 적절하게 변경하여 3 계층으로 만듭니다.
's + 1'과's + 2'는 좌변 값이 아니며 할당의 왼쪽에있을 수 없습니다. 당신은's [1]'과's [2]'를 의도했을 것입니다. 그리고 이것은's'에 단지 두 개의 층을 주며, 질문에서 요구 된 3 개의 층을 제공하지 않습니다. –
@EricPostpischil 예. 당신이 맞습니다. 's + 1'은 컴파일되지 않습니다. 하지만's + 1'은's [1]'의 합성 설탕이라고 생각했습니다. 참고 : 예를 들어 C 언어에서 a [i] 표기법은 * (a + i) - Wikipedia에 대한 구문 설탕입니다. –
@EAGER_STUDENT :'s + 1'은'* (s + 1)'이 아닙니다. 별표는 세상의 차이를 만듭니다. – dreamlax
- 1. C 배열의 배열 배열
- 2. C - 문자 배열 배열
- 3. C : 문자 배열 배열
- 4. C 배열 목록 배열
- 5. C# 배열 배열 반환
- 6. ObjC 2D 배열 : 배열 대 선형 배열 대 C 배열?
- 7. 단일 행에 배열 c 배열
- 8. 구조체 초기화 배열 C 배열
- 9. 배열 배열 정렬 [] 배열
- 10. 배열 내부 배열 배열
- 11. 배열 배열 혼돈 배열
- 12. 배열 배열?
- 13. 배열 C++
- 14. 배열 C++
- 15. C 배열
- 16. 배열 내부 배열 Foreach 배열
- 17. Python np 배열 배열 배열
- 18. 배열 다시 배열
- 19. CLIPS에서 배열 배열
- 20. Go : 배열 배열, 조각 배열, 배열 조각 및 조각 조각
- 21. PHP 배열 다시 배열
- 22. C++, 객체 배열 이들 객체를 가리키는 포인터의 배열 배열
- 23. 배열 배열 초기화
- 24. arma :: cx_mat을 배열 배열
- 25. 배열
- 26. MatLab의 벡터/배열 배열
- 27. 배열 조합 배열
- 28. 널 배열 int 배열
- 29. 배열
- 30. 배열
http://cdecl.org –
's [0]'을 (를) 배열 또는 배열 요소의 포인터로 바꾸시겠습니까? 'a [0]'을 배열로 사용하거나 배열 요소에 대한 포인터로 사용 하시겠습니까? –
Eric의 질문을 명확히하기 위해 : 하나는 '영리한'색인 생성 문제이며 실제로는 하나의 큰 배열입니다. 다른 하나는 실제 포인터 참조를 사용하며 최종 다차원 배열은 더 이상 연속하지 않습니다. –