📜  不要将sizeof用于数组参数(1)

📅  最后修改于: 2023-12-03 15:21:32.078000             🧑  作者: Mango

不要将sizeof用于数组参数

在编程中,经常需要获取一个数组的大小。在C/C++中,我们可以使用sizeof运算符来获取数组的大小。然而,有些程序员会错误地将sizeof应用于数组参数,这是一个常见的错误。

下面是一个错误的示例:

void my_function(int my_array[]) {
    int size = sizeof(my_array); // 错误!sizeof用于数组参数返回指针的大小
    // 其他代码
}

在上面的示例中,my_array是一个int类型的数组参数。因为数组传递给函数时实际上传递的是一个指向数组开头的指针,所以sizeof(my_array)实际上返回的是指针的大小,而不是数组的大小。

要正确地获取一个数组的大小,我们应该使用sizeof运算符来获取数组元素的大小,然后将其与数组的元素数量相乘。以下是一个正确的示例:

void my_function(int my_array[]) {
    int size = sizeof(int) * sizeof(my_array) / sizeof(int); // 正确的做法
    // 其他代码
}

在上面的示例中,我们首先获取int类型元素的大小,然后将其乘以数组的元素数量,最后将结果除以一个int类型元素的大小,就可以得到数组的大小了。

总之,不要将sizeof用于数组参数,因为它会返回指针的大小而不是数组的大小。要获取数组的大小,应该使用sizeof运算符和数组元素的数量来计算。