如何计算函数中数组的长度?

时间:2014-08-24 16:14:21

标签: c

我是C的新手,我想在C中实现99个Haskell问题。 到目前为止,我意识到sizeof - 函数中的last打印4,因为指针的长度为4.

但是如何在函数中获取列表的大小?

代码

#include <stdio.h>

int last(int *list){

    int size = sizeof(*list);
    printf("%d\n", size);
    return 0;
}

int main(){

    int *a = {10, 20, 30, 40, 50, 60, 70, 80, 90};
    last(&a);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

#include <stdio.h>

#define last(a) a[sizeof(a)/sizeof(*a)-1]

int main(){
    int a[] = {10, 20, 30, 40, 50, 60, 70, 80, 90};
    char ca[] = { 'x', 'y', 'z' };
    printf("%d\n", last(a));
    printf("%c\n", last(ca));
    return 0;
}