C++数组做参数为什么一定要传递数组长度?

2024年12月05日 09:47
有4个网友回答
网友(1):

因为怕引起数组越界,当数组传入一个函数后,就会用循环来处理。

比如下面的例子很好地说明了这个问题:

#include "iostream.h"
int max(int a[],int size);//size是数组的大小
int main()
{
int number[]={2,45,12,6,23,98,13,3};
cout < return 0;
}
int max(int a[],int size)
{
int max=0;
for (int i=0;i {
if (a[i]>max)
max=a[i];
}
return max;
}
运行结果:
98

网友(2):

C++中函数的参数是数组的时候,传递给函数的是一个指针,指向数组的首地址,指针的大小一般固定为4B,一般情况下int 的大小也是4 ,所以。。。。数组的长度不是必须的参数,你可以不传递,传递进来只是为了方便编程,函数里面会用到,
不知道为什么变成了红色字。。- --

网友(3):

因为A其实是一个指针,你肯定是用的x86,sizeof(A)表示的是地址的长度,x86地址长度为4个字节,所以sizeof(A)/sizeof(int)为1。(通常说到sizeof(A)为数组长度是c编译过程中自动替换的,如果数组作参数传入函数将不会替换,所以此时函数里的A就是一个指针)

网友(4):

假如我是main函数, 你是reverse函数,我调用你,只告诉你 一个int 类型的数组首地址,让你处理, 你不知道长度你怎么办事.
又不是字符串,字符串由'\0'结束嘛所以不需要告诉长度.