📅  最后修改于: 2023-12-03 15:08:59.938000             🧑  作者: Mango
在C/C++中,我们可以使用sizeof操作符来获取数组的大小,但是如果我们不想使用这个操作符,还有其他的方式来获取数组的大小。本文将为大家介绍三种常见的方法。
可以使用指针的加减运算来计算数组的大小。具体步骤如下:
int arr[10];
int *p = &arr[0];
int size = 0;
while (*p)
{
size++;
p++;
}
完整代码如下:
#include <stdio.h>
int main()
{
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int *p = &arr[0];
int size = 0;
while (*p)
{
size++;
p++;
}
printf("The size of the array is %d\n", size);
return 0;
}
我们可以定义一个宏来计算数组的大小,具体实现如下:
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
这个宏定义中,sizeof(arr)表示整个数组的大小,sizeof((arr)[0])表示数组中一个元素的大小,两者相除即可得到数组的大小。
完整代码如下:
#include <stdio.h>
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
int main()
{
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int size = ARRAY_SIZE(arr);
printf("The size of the array is %d\n", size);
return 0;
}
在C++中,我们可以使用模板来计算数组的大小,具体实现如下:
template<typename T, size_t N>
size_t array_size(T(&)[N])
{
return N;
}
这个模板函数中,T表示数组元素的类型,&表示传递的是一个数组的引用,而不是一个指针,N表示数组的大小,使用sizeof操作符可以获取到。
完整代码如下:
#include <iostream>
template<typename T, size_t N>
size_t array_size(T(&)[N])
{
return N;
}
int main()
{
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int size = array_size(arr);
std::cout << "The size of the array is " << size << std::endl;
return 0;
}
以上就是在C/C++中计算数组大小的三种方式,希望可以帮助到大家。