После инициализации массива беззнаковых символов 4x4 в стеке я хотел бы передать указатель на массив другой функции.Я не понимаю, почему это не удается.
С моей точки зрения, это должно быть то же самое, что и передача указателя на любой другой массив (адрес, где начинается массив).
Хотя при попытке передать его, онКажется, только первое место в массиве находится в правильном месте, и я обращаюсь к случайной памяти во всех других местах.
Что я здесь не так делаю?Любое объяснение, почему это так?
#include <stdio.h>
typedef unsigned char multi_array[4][4];
void print_array(multi_array* arr){
unsigned char i,j;
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
printf("%d ", *arr[i][j]);
}
}
printf("\n");
}
int main() {
unsigned char i,j,z;
multi_array arr; // Aren't we allocating memory on the stack for a 4x4 u_char array?
z = 0;
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
arr[i][j] = z++;
}
}
print_array(&arr); // Arent we passing the address of the beginning of the array here?
return 0;
}
OUTPUT: 0 4 8 12 48 255 0 0 48 55 23 108 0 0 56 255