因此,鉴于以下情况:
#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/