Това няма смисъл за мен:
int start_tab[2];
printf("size of an array: %d\n", sizeof(start_tab));
8
Защо 8? Как да го направя да бъде размер 2?
Това няма смисъл за мен:
int start_tab[2];
printf("size of an array: %d\n", sizeof(start_tab));
8
Защо 8? Как да го направя да бъде размер 2?
Моля, имайте предвид, че sizeof
е оператор, а не функция. sizeof
връща размера на предоставения тип данни.
Защо 8?
start_tab
е от тип int [2]
, връща 2 * sizeof (int)
# или 8
.
Как да го направя да бъде размер 2?
Ако искате да получите броя на елемента в масива, просто разделете общия размер на размера на един елемент, като
sizeof(start_tab) / sizeof(start_tab[0])
# Във вашата платформа, sizeof(int)
== 4.
Трябва да разделите на размера на типа като този
sizeof(start_tab) / sizeof(int)
sizeof
дава размера в байтове, тъй като всяко int
е 4
байта, тогава два от тях очевидно са осем, така че можете да разделите на размера на int
и да получите стойността, която търсите.
Трябва да направите sizeof(start_tab)/sizeof(start_tab[0])
, за да получите броя на елементите в масив
Тъй като int е 4
байта... така че умножението по 2
прави 8
Така че, ако искате размерът на елемента, разделете на sizeof(int)
.
Тъй като int
е на вашата платформа 32 бита, което е 4
байта. Имате 2
int
s, умножени по 32 бита, е равно на 64 бита, което е 8
байт. sizeof
ще върне размера на типа данни в байтове.
От стандарта C (6.5.3.4 Операторите sizeof и alignof)
2 Операторът sizeof дава размера (в байтове) на неговия операнд, който може да бъде израз или името на тип в скоби.
Масив
int start_tab[2];
заема 2 * sizeof( int )
байта, защото има два елемента и всеки елемент има тип int
. Така че, ако sizeof( int )
е равно на 4
, тогава масивът заема 8
байта.
Така че имате формула
sizeof( start_tab ) = 2 * sizeof( int )
Или в общ случай, ако масивът има N елемента от тип T като например
T array[N];
тогава
sizeof( array ) = N * sizeof( T )
Или тъй като всеки елемент от масива има тип T, включително първия елемент от масива, тогава можете също да пишете
sizeof( array ) = N * sizeof( array[0] )
С помощта на тази формула можете да изчислите N like
N = sizeof( array ) / sizeof( array[0] )
or
N = sizeof( array ) / sizeof( *array )
защото *array
дава първия елемент от масива.
sizeof
? - person juanchopanza   schedule 07.04.2015