我在C中写了以下函数:
void dummy(int* my_array, int size)
{
//my implementation
}
有没有办法检查尺寸是否真的是my_array
的大小?
例如,如果我调用该函数并使用my_array
一个包含4个元素的数组但是为size
传递5,那么有没有办法知道5实际上不是数组的大小?
谢谢你的证据。
答案 0 :(得分:4)
你正在以错误的方式看待它。数组是连续的内存。在C中,您可以使用指向其开头及其大小的指针来表示此概念。由于您的数组由<my_array, size>
元组表示,因此讨论my_array
的大小没有意义,因为它只是数组的起始指针。
答案 1 :(得分:0)
不幸的是,在C中没有这样的方法。由于数组总是指向内存中任意地址的指针,因此不存在可以检查的“数组边界”。
这就是许多C函数具有特殊大小参数的原因:因为没有其他方法可以确定数组的大小。
答案 2 :(得分:0)
当您声明并初始化数组时,数组的大小很大。
int my_array[100] = {0};
的大小为100。
int my_other_array[50] = {0};
的大小为50。
如果你想要数据的长度,那么你要用比语言能处理的更抽象的术语来思考。当语言不支持时,数据的长度是不可测量的参数。