c - 我的数组有多大?

标签 c arrays

因此,鉴于以下情况:

#include <stdio.h>
int * getarr();
int main(int argc, char* argv)
{
    int * arr = getarr();
    printf("%d", sizeof(arr));
}

int* getarr()
{
    static int a[4] = {0,1,0,3};
    return a;
}

如何找到arr的长度? arr[4] == 0,但 arr[0]arr[2] 也是如此。

如果这是一个 char*,答案将是 iterate until '\0',但这似乎在这里不起作用,因为 '\0 ' == 0

寻址 arr[5] 似乎始终会导致值 > 163 - 1(我系统上 int 的大小),但事实并非如此这似乎是一种可靠的衡量标准,因为它让我印象深刻,因为它只是内存中的一个空位置。

有没有办法一致地检索这个值?还是只需要传入?

最佳答案

当您在 main() 函数中时,您无法检索数组的长度。当 int[4] 被转换为由 getarr()

返回的 int * 时,此信息已丢失

关于c - 我的数组有多大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7336547/

相关文章:

arrays - 如何在 PostgreSQL 中将列的数据类型从 bytea[] 更改为 bytea?

c - 该结构在 C 内部如何工作?如何将数据从一种结构复制到另一种结构?

c - 在边缘触发模式下从 epolled 非阻塞套接字接收

c# - 为什么我不能在C#中将字符串更改为数组

c - 在结构中初始化 main vs 中的 char 数组

python - 手动将数组输入到python函数中

c - C中的数据类型,数据丢失

c - C编程中的指针

c - 如何在 C 中连接常量/文字字符串?

php - 如何从数组变量PHP中获取指定列到动态变量中