Помогите осознать механику кода
Изучаю СИ на сайте метанит и вот наткнулся на вот этот код:
#include <stdio.h>
int main(void)
{
char *fruit[] = {"apricot", "apple", "banana", "lemon", "pear", "plum"};
int n = sizeof(fruit)/sizeof(fruit[0]);
for(int i=0; i<n; i++)
{
printf("%s \n", fruit[i]);
}
return 0;
}
Решил разобрать код, и для начала вывел на экран sizeof(fruit) и sizeof(fruit[0]) и меня удивили значения 24 и 4 соответственно, был бы благодарен за пояснение этой ситуации.Заранее спасибо!
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
char *fruit[] = {"apricot", "apple", "banana", "lemon", "pear", "plum"};
Из инициализации видно, что в массиве 6 элементов, шесть указателей char*. Ergo, sizeof(fruit) равен 6*sizeof(char*) = 6*4 = 24 (в 32-разрядном приложении).
Размер sizeof(fruit[0]) равен размеру одного элемента, одного char* - sizeof(char*) == 4 байта.
Вот и все чудеса...