우리는 다음과 같은 두 가지 정적으로 정의 바이트 배열을 가지고 ...C에서 변수에 다차원 배열을 저장하는 방법은 무엇입니까?
unsigned char pixelBuffer1[32][6] = {/**/};
unsigned char pixelBuffer2[32][6] = {/**/};
우리는 변수에 현재의 버퍼를 저장할하지만 우리는 그것을 선언하는 방법을 확실하지 않다. 이것은 우리가 내가 알고 [SOMETYPE]
에 입력해야할지 확실하지 않다,
[SOMETYPE] activePixelBuffer;
activeBufferId == getOneOrTwoBasedOnSomeLogic();
activePixelBuffer = (activeBufferId == 1)
? pixelBuffer1
: pixelBuffer2;
activePixelBuffer[17][4] = x;
activeBufferId == getOneOrTwoBasedOnSomeLogic();
activePixelBuffer = (activeBufferId == 1)
? pixelBuffer1
: pixelBuffer2;
activePixelBuffer[23][2] = y;
그러나 을 (우리가 코드에 걸쳐 activePixelBuffer의 가치를 재 할당하는 참고) ... 우리가 원하는 것입니다 우리가 함수에 pixelBuffer1 또는 pixelBuffer2을 통과하고, 우리는 ... 이런 식으로
void someFunc(unsigned char (&myArray)[32][6])
{
...
}
그것을 정의하는 것입니다 ...하지만 로컬 변수 선언 형식으로 작동하지 않습니다. 또한, 이는 우리가 괜찮은 차원 크기를 하드 코딩하도록 강요하지만, 그렇게하지 않는 것이 좋을 것입니다.
우리는 또한 포인터를 사용해 보았지만 배열의 2 차원 적 측면은 우리를 너무 멀리 던졌습니다.
그래서 우리는 유형에 무엇을 사용합니까?
'unsigned char ** myArray'가 작동해야합니다. –
'typedef '를 사용하십시오. 이렇게하면 이런 일들이 훨씬 쉬워집니다. –
@LeventeKurusa : 아니요. 실제로 작동하지 않습니다.'char **'는'char [] []'과 동일하지 않습니다. –