查找作为参数传递给函数的数组中的元素数。
Find number of elements in array passed to a function as argument.
我试图创建一个函数来查找数组中的元素数量。为此,我使用了以下代码:
#include<iostream>
#include<stdlib>
int no_of_ele(A[]) //function to return size of array
{
return (sizeof(A)/sizeof(A[0]);
}
void main()
{
system("cls");
int arr[5] = {1,2,3,4,5};
cout<<"Number of elements in array are "<<no_of_ele(arr)<<endl;
system("pause");
}
在这种方法中,我得到如下输出:
然后,我这样做了:
cout<<"Size of array is "<<sizeof(arr)<<endl;
cout<<"Size of data type is "<<sizeof(arr[0]);
现在我得到了绝对正确的大小输出如下:
为什么?
数组在传递给您的函数时衰减为指针。
sizeof(int)/sizeof(int)... = 1
原因是,参数被压入函数的堆栈。函数声明中声明的编译器将只发送数组的地址。
将数组作为参数传递时
int func(int arr[])
正如:
int func(int *arr)
将数组作为函数参数,您无法使用 sizeof
.
确定其大小
现在有更好的方法,但最接近的是:
#include<iostream>
template<std::size_t N>
int no_of_ele(int (&A)[N]){
return sizeof(A)/sizeof(A[0]); // or just return N
}
int main(int argc, char* argv[]){
int arr[5] = {1,2,3,4,5};
std::cout<<"Number of elements in array are "<<no_of_ele(arr)<<std::endl;
return 0;
}
向 1998 致以问候。问题是,Turbo C++ 是否支持模板?
更多信息请看这里:
我试图创建一个函数来查找数组中的元素数量。为此,我使用了以下代码:
#include<iostream>
#include<stdlib>
int no_of_ele(A[]) //function to return size of array
{
return (sizeof(A)/sizeof(A[0]);
}
void main()
{
system("cls");
int arr[5] = {1,2,3,4,5};
cout<<"Number of elements in array are "<<no_of_ele(arr)<<endl;
system("pause");
}
在这种方法中,我得到如下输出:
然后,我这样做了:
cout<<"Size of array is "<<sizeof(arr)<<endl;
cout<<"Size of data type is "<<sizeof(arr[0]);
现在我得到了绝对正确的大小输出如下:
为什么?
数组在传递给您的函数时衰减为指针。
sizeof(int)/sizeof(int)... = 1
原因是,参数被压入函数的堆栈。函数声明中声明的编译器将只发送数组的地址。
将数组作为参数传递时
int func(int arr[])
正如:
int func(int *arr)
将数组作为函数参数,您无法使用 sizeof
.
现在有更好的方法,但最接近的是:
#include<iostream>
template<std::size_t N>
int no_of_ele(int (&A)[N]){
return sizeof(A)/sizeof(A[0]); // or just return N
}
int main(int argc, char* argv[]){
int arr[5] = {1,2,3,4,5};
std::cout<<"Number of elements in array are "<<no_of_ele(arr)<<std::endl;
return 0;
}
向 1998 致以问候。问题是,Turbo C++ 是否支持模板?
更多信息请看这里: