如何找到数组的长度

时间:2019-12-10 08:11:14

标签: c

我制作了一个直方图,并尝试找到直方图的长度。 但是直方图的长度给了我错误的输出。这是我的代码优先。

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

出什么问题了?

1 个答案:

答案 0 :(得分:1)

我建议创建一个struct array来保存长度和指向数组的指针。

struct array {
    int length;
    int* values;
}

然后在代码中,您可以使用arr.length获得长度,并使用arr.values获得指针。