Я пытаюсь динамически выделить массив размером 10. Но когда я печатаю элементы массива, я получаю значение 8 элементов. (Я работаю над редактором, предоставленным hackerrank.)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
char *s = malloc(1024*sizeof(char));
scanf("%[^\n]", s);
int* freq = (int*)calloc(10,sizeof(int));
for(int i=0;i<sizeof(freq);i++)
printf("%d ",freq[i]);
}
Ожидаемый результат:
0 0 0 0 0 0 0 0 0 0
Результат, который я получаю:
0 0 0 0 0 0 0 0
Почему я не получаю ожидаемого результата?
sizeof(freq)
- это размер указателя, а не то, на что он указывает. Вы знаете длину массива, вы только что передали10
вcalloc
. - person Weather Vane   schedule 15.03.2020sizeof
возвращает размер самого указателя в байтах, а не количество элементов массива, на которые он указывает. Невозможно получить размер динамически выделяемого массива. - person HolyBlackCat   schedule 15.03.2020