Я видел этот вопрос о результате sizeof()
, и я не понял выход этой функции.Функция с указателем на указатель на
#include <stdio.h>
void checkSizes(char matrix3d[10][20][30])
{
printf ("%lu\t", sizeof(matrix3d));
printf ("%lu\t", sizeof(*matrix3d));
printf ("%lu\t", sizeof(**matrix3d));
printf ("%lu\t", sizeof(***matrix3d));
}
int main()
{
char matrix[10][20][30];
checkSizes(matrix);
}
, как я предполагал, когда функция получить массив для работы, он получает указатель на массив, поэтому, когда я буду печатать первую строку
printf ("%lu\n", sizeof(matrix3d));
выход будет be 8.
BUT не следующий printf получит меня к другому указателю указателя, что его размер будет также 8?
так я thouth это приведет к
8 8 8 1
реальный выход
8 600 30 1
использовать '% zu' для печати значения аргумента' sizeof' –
matrix3d не 'char ***', а 'char (*) [20] [30]'. Только внешний размер распадается на указатель. Остальные остаются запеченными в типе. – StoryTeller
Вы можете преобразовать размер в unsigned long. 'printf ("% lu \ n ", (unsigned long) sizeof (matrix3d));' –