我正在尝试编写一个简短的函数,它接受一个指向数组的指针并简单地返回它的大小。到目前为止,我所拥有的是这样的:
int main (void) {
double MyArray[3] = {0, 1, 2};
int Temp = ArraySize(MyArray);
return 0;
}
int ArraySize(double * MyArray) {
return sizeof(MyArray) / sizeof(*MyArray);
}
但这似乎不起作用。 任何帮助,赞赏, 千斤顶
答案 0 :(得分:3)
这是不可能的 - 指针只是指向数组的第一个元素。没有办法从中提取数组大小。
您可以通过引用传递数组,并将大小推断为模板参数:
template <typename T, size_t N>
size_t ArraySize(T (&)[N]) {return N;}
这只有在您可以访问数组本身时才会起作用(就像您在示例中所做的那样)。如果它已经衰减为指针,则大小信息已丢失。
答案 1 :(得分:0)
不可能,你需要在函数中传递长度与数组。像,
int ArraySize(double * MyArray, size_t length)
答案 2 :(得分:0)
你无法做你想做的事。函数MyArray
中的ArraySize
是指向double
的指针,而不是double
的数组。您必须显式传递数组长度以及数组的基址。