无法动态分配大小为 10 的数组
Can't allocate an array dynamically of size 10
我正在尝试动态分配大小为 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)
将 return 的大小 int *
在您的机器中以字节为单位,恰好是 8。只需使用 i < 10
.
我正在尝试动态分配大小为 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)
将 return 的大小 int *
在您的机器中以字节为单位,恰好是 8。只需使用 i < 10
.