c - C 中的所有数组长度方法都不起作用

标签 c arrays methods

我试过 (sizeof(array)/sizeof(array[0]))。没用。 我写了一个简单的函数:

int length(int array[]){
    int i=0;
    while(array[i]) i++;
    return i;
}

前一分钟有效,下一分钟无效。

有人请帮忙!我将 Xcode 用作 IDE

最佳答案

数组的长度不是 C 中数组的一部分,因此当将数组作为参数传递给函数时,您也应该将其长度作为参数传递。这是一个例子:

#define ARRLEN(a) (sizeof(a)/sizeof (a)[0]) /* a must be an array, not a pointer */

void printarray(int* a, int alen)
{
    int i;
    for (i = 0; i < alen; i++)
        printf("%d\n", a[i]);
}

main()
{
    int a[] = { 3, 4, 5 };
    printarray(a, ARRLEN(a));
    return 0;
}

但是,如果您的数组的定义方式总是以非正常数据的标记结束,那么您可以遍历元素直到您遇到哨兵。例如,

void printstrings(char** a)
{
    int i;
    for (i = 0; a[i]; i++)
        printf("%s\n", a[i]);
}

main()
{
    char* a[] = { "This", "should", "work.", NULL };
    printstrings(a);
    return 0;
}

关于c - C 中的所有数组长度方法都不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13391965/

相关文章:

c++ - 函数指针如何工作?

c - 从补丁文件中去除C注释的方法

C *运算符在数组赋值中的含义

c++ - 前或后测试循环?

c - 获取字符串的索引

c - 通过 SSL 套接字反向 shell

java - 如何检测一个元素是否是数组中的最后一个元素?

python - 为什么我可以调用类中未显式定义的所有这些方法?

一般的 Javascript 对象无限方法

java - 在 Java 中移动 Math.ceil