我制作了一个直方图,并尝试找到直方图的长度。 但是直方图的长度给了我错误的输出。这是我的代码优先。
int *n = calloc(l,sizeof(int));
for (int i = 0; i < l; i++) {
scanf("%d", &n[i]);
}
int *hist = (int*) malloc(sizeof(int));
for (int i = 0; i<l; i++){
hist[n[i]]++;
hist = realloc(hist, sizeof(int));
}
//length of histogram array
int histlen = sizeof(hist)/sizeof(hist[0]);
printf("legnth : %d\n", histlen);
所以
input: 3 3 3 2 2 1
输出应为
length:3
但是我的代码给了我
length:2
出什么问题了?
答案 0 :(得分:1)
我建议创建一个struct array
来保存长度和指向数组的指针。
struct array {
int length;
int* values;
}
然后在代码中,您可以使用arr.length
获得长度,并使用arr.values
获得指针。