C数组作为函数参数:大小检查?

时间:2015-10-09 14:49:24

标签: c arrays

我在C中写了以下函数:

   void dummy(int* my_array, int size)
   {
     //my implementation
   }

有没有办法检查尺寸是否真的是my_array的大小? 例如,如果我调用该函数并使用my_array一个包含4个元素的数组但是为size传递5,那么有没有办法知道5实际上不是数组的大小?

谢谢你的证据。

3 个答案:

答案 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。

如果你想要数据的长度,那么你要用比语言能处理的更抽象的术语来思考。当语言不支持时,数据的长度是不可测量的参数。