C++中一个让菜鸟想爆脑袋的例题:

来源:百度知道 编辑:UC知道 时间:2024/05/21 17:50:47
#include "iostream.h"
int max(int a[],int size);//size 是数组的大小
int main()
{
int number[]={2,45,12,6,23,98,13,3};
cout <<max(number,sizeof(number)/sizeof(int)) <<endl;
return 0;
}
int max(int a[],int size)
{
int max=0;
for (int i=0;i<size;i++)
{
if (a[i]>max)
max=a[i];
}
return max;

根据for (int i=0;i<size;i++),max函数中“size”的意义是“数组的大小”。
可是“size”不是max函数中声明的一个整型变量吗?它并没有被赋值,应该是一个没有意义的随机值吧?系统怎么就知道判断它是“数组的大小”呢?

你在调用max函数的时候,第二个参数sizeof(number)/sizeof(int)的值就赋给了size,怎么说它没有被赋值呢?sizeof(number)返回的是整个数组在内存中占用的字节数,sizeof(int)返回的是每个int数据类型在内存中占用的字节数,两都相除就可以得到这个数组里一共有多少元素了。函数在定义或声明时,如果有数组作为它的参数的话,都得另外有一个整型变量来定义这个数组的长度(就是有多少元素)

size不是函数的一个参数么,你调用函数的时候就传进值了,不是随机数。
cout <<max(number,sizeof(number)/sizeof(int)) <<endl; 这句的sizeof(number)/sizeof(int)就是计算数组的大小,首先计算数组占用的空间,然后除以一个int型占用的空间,就得出了数组的大小也就是size了

参数传递~~~
main中引用时max(a,b)
则再调用
int max(int x,int y)的话,就有:
x=a,y=b;