У меня есть массив, состоящий из массивов произвольной длины.
int foo[] = {99, 1, 2};
int baz[] = {9, 8};
int tar[] = {-1, -2, -3, -4, -5, -6};
int *stuff[] = {foo, baz, tar}
Я не знаю размер ни одного из этих массивов, мне нужно определить размер, используя sizeof()
, но я получаю странныйрезультаты, которые, кажется, не имеют смысла, когда я сравниваю их.
Например, когда я печатаю места памяти, они совпадают:
printf ("%p ", foo);
printf ("%p ", stuff[0]);
> 0x7ffef86f8de4 0x7ffef86f8de4
И когда я печатаю первые значенияВ массиве они одинаковы:
printf ("%d ", foo[0]);
printf ("%d ", stuff[0][0]);
> 99 99
Однако здесь возникает проблема, когда сравнивать их с sizeof()
они НЕ одинаковы:
printf ("%lu ", sizeof(foo)/sizeof(foo[0]));
printf ("%lu ", sizeof(stuff[0])/sizeof(stuff[0][0]));
> 3 2