c - 在函数中查找数组的长度

标签 c arrays

<分区>

在下面的程序中,数组 ar 的长度在 main 中是正确的,但在 temp 中它显示指向 ar 的指针的长度在我的电脑上是 2(以 sizeof(int) 为单位)。

#include <stdio.h>

void temp(int ar[]) // this could also be declared as `int *ar`
{
    printf("%d\n", (int) sizeof(ar)/sizeof(int));
}

int main(void)
{
    int ar[]={1,2,3};
    printf("%d\n", (int) sizeof(ar)/sizeof(int));
    temp(ar);
    return 0;
}

我想知道应该如何定义函数,以便在函数中正确读取数组的长度。

最佳答案

没有“内置”方法来确定函数内的长度。无论您传递 arrsizeof(arr) 将始终返回指针大小。所以最好的方法是将元素的数量作为单独的参数传递。或者你可以有一个特殊的值,比如 0-1 来表示结束(比如它是字符串中的 \0 ,它只是 字符[])。 但是当然,“逻辑”数组大小是 sizeof(arr)/sizeof(int) - 1

关于c - 在函数中查找数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40291271/

相关文章:

使用命令行参数检查范围

c - 将缓冲区 (char*) 传递给 C 中的函数

c++ - 使用 Strncpy 在 C++ 中创建一个简单的文本编辑器

java - 字符串数组[0]不通过if

c - 如何读取不确定数据表单文件并将其存储在结构中

c++ - 如何将 CFString 转换为 HFSUniStr255?

C - 结构数组元素交换

将字符串复制到数组中,然后使用 for 循环打印它

arrays - 使用元组进行 Scala 数组切片

ruby - 数组类型错误 : can't convert Fixnum into String