c - 获取传递给 C 函数的数组长度

标签 c arrays pointers

如何将数组传递到函数中并保留有关其长度的信息,而不单独传递长度?

[ self 问答 - 下面的答案比我的更好]

最佳答案

在 C 中,数组不能完全传递给函数,因此这是不可能的。当您传递数组名称时,它会衰减为指向第一个元素的指针。使用 sizeof 运算符不会以任何方式帮助您,因为它会为您提供指针的大小。

要么将数组的大小传递给函数,要么在数组末尾使用哨兵值。

#include <stdio.h>

int size(int *a)
{
    int count = 0;
    while(*a++ != -1)
        count++;
    return count + 1;
}
int main(void)
{
    signed int a[] = { 3, 5, 7, 9, 10, -1};

    printf("size of array is: %d\n", size(a));
}

关于c - 获取传递给 C 函数的数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22403232/

相关文章:

c - 在 C99 中使用 free() 之后的指针?

C:将具有数组的指针传递给函数时,会出现运行时错误。为什么?

c++ - 当参数是指向数组的取消引用的指针时,为什么 `sizeof()`无法按预期工作?

c - 通过调用共享 DLL 在两个线程之间进行信息交换

java - 将字符串数组转换为 double 组

C 函数指针 : Can I jump to heap memory assembler code?

c++ - 多线程代码中缓存友好的数组迭代模式

c - 如何找到数组的大小(从指向数组第一个元素的指针)?

c - 编译链接到AIX上的静态库的C应用程序

c++ - 变量的内存分配