Проверить количество элементов массива.
Код:
#include
#include
int main()
{
const char text[] = "123456";
const int numbers [] = {1, 2, 3, 4, 5, 6};
printf("%lu\n", sizeof(text) / sizeof(*text));
printf("%lu\n", sizeof(numbers) / sizeof(*numbers));
char * str;
int * nums;
str = (char*) malloc(7 * sizeof(char));
nums = (int*) malloc(6 * sizeof(int));
for(int x = 0; x < 6; x++)
{
str[x] = x + 1 + '0';
nums[x] = x + 1;
}
str[6] = '\0';
printf("%lu\n", sizeof(str) / sizeof(*str));
printf("%lu\n", sizeof(nums) / sizeof(*nums));
free(nums);
free(str);
return 0;
}
Консоль:
7
6
8
2
Почему-то результаты проверки размера массивов совершенно отличаются.
Для строки я добавли 7 элементов, думая, что последний резервируется для строкового терминатора, а вышло, что 8 элементов зарезервировано.
А почему показывает только 2 элемента для массива чисел -- воообще не понятно.