Почему sizeof marbles равняется 40 байтам, хотя marbles это указтель на первый элемент массива? (
printf("%d", marbles == &marbles[0]); // true
)
Вот в функции sum все логично, в функцию передается указатель на первый элемент, и собственно выводится размер указателя равный 8 байтам.
почему marbles == &marbles[0], но sizeof(marbles) != sizeof &marbles[0]?#include <stdio.h>
#include <conio.h>
#define SIZE 10
int sum(int * arr, int n);
int main(void)
{
int marbles[SIZE] = { 20, 10, 5, 39, 4, 16, 19, 26, 31, 20 };
long answer = sum(marbles, SIZE);
printf("Common sum of array items = %ld.\n", answer);
printf("Memory: %zd bytes.\n", sizeof marbles); // 40
printf("%d", marbles == &marbles[0]); // true
_getch();
return 0;
}
int sum(int * arr, int n)
{
int index;
int total = 0;
for (index = 0; index < n; index++)
total += *(arr + index);
printf("Size of arr = %zd bytes.\n", sizeof arr); // 8
return total;
}