用于计算数组长度的C程序

时间:2015-02-20 05:01:47

标签: c function debugging

我正在学习C,并尝试编写一个函数,给定一个整数数组,返回数组的长度。这是我的代码:

#include <stdio.h>

int length_of_array(int array[])
{
    int length = 0;
    int i = 0;
    while (array[i] != '\0') {
        length += 1;
        i += 1;
    }
    return length;
}

int main()
{
    int test_array[] = {1, 2, 3, 4, 5};
    printf("%d\n", length_of_array(test_array));
    return 0;
}

然而,当我编译这段代码并运行它时,我说传入的数组的长度是14.有谁知道这里可能出现什么问题?

1 个答案:

答案 0 :(得分:3)

C中的字符串是NUL终止的。数组不是(除非你自己明确地做)。数组的大小就是数组的大小:如果分配为常量,则可以使用sizeof运算符找出大小。如果你拥有的只是一个普通的指针,你需要记住它的大小 - 一旦忘记它,C就无法获得它。

#include <stdio.h>
int main() {
    int test_array[] = {1, 2, 3, 4, 5};
    int *test_ptr = test_array;
    printf("%lu\n", sizeof(test_array) / sizeof(*test_array)); // correct
    printf("%lu\n", sizeof(test_ptr) / sizeof(*test_ptr));     // incorrect
    return 0;
}