数组作为函数参数传递

数组作为函数参数传递 数组作为函数参数传递时,传入的是数组首地址,并非数组本身。今天总算理解了这一点。写了一个打印数组元素的函数,代码如下:

void print1(int arr[]) {
          
   
	int len = sizeof(arr) / sizeof(arr[0]);
	cout << sizeof(arr)<<endl;
	for (int i = 0;i < len;i++) {
          
   
		cout << arr[i] << " ";
	}
}

main函数:

int arr[5] = {
          
    1,2,3,4,5 };
	print1(arr);

运行结果: 显然,并没有打印出数组所有元素。根据输出,sizeof(arr)=4; sizeof(arr)/sizeof(arr[0])=1。很明显,如果传入的是数组本身,sizeof(arr)的值一定远大于4。传入的是地址的话,则刚好是4个字节。 再看我写的第二个打印函数:

void print2(int arr[], int len) {
          
   
	for (int i = 0;i < len;i++) {
          
   
		cout << arr[i] << " ";
	}
}

main函数

int arr[5] = {
          
    1,2,3,4,5 };
	int len = sizeof(arr) / sizeof(arr[0]);
	cout << "数组长度:"<<len<<"   数组所占空间:"<< sizeof(arr)<<endl;
	print2(arr, len);

运行结果: 结果准确无误。 总结:当数组作为函数参数传递时,不能在函数中用sizeof求数组长度。

经验分享 程序员 微信小程序 职场和发展