我是靠谱客的博主 动人秋天,这篇文章主要介绍C++调用涉及数组的函数需要传入数组长度的原因,现在分享给大家,希望可以做个参考。

在写一个简单的选择排序时,发现如果不在调用排序函数时传入数组大小,程序得不到预期结果,经过调试,发现原来在不同地方sizeof(A)的结果是不同的,具体如下

 #include<cstdio>
 #include<iostream>
 using namespace std;
 
void selectSort(int A[],int n){
	//int n = sizeof(A)/sizeof(A[0]);
	for(int i = 0; i< n; i++){
		int k = i;
		for(int j = i; j < n; j++){
			if(A[j]<A[k])
				k = j;
		 } 
		 int temp = A[k];
		 A[k] = A[i];
	 	 A[i] = temp;	 
	 }

} 	

int main(){
	int A[5] = {1,3,2,5,4};
	int n = sizeof(A)/sizeof(A[0]);
	cout<<sizeof(A)<<endl;
	//cout<<n<<endl;
	selectSort(A, n);
	for(int i = 0; i < 5; i++){
		cout<<A[i]<<endl;
	}
} 

在mian函数中,sizeof(A)是所有数组元素所占用的内存空间字节数,因此可以通过sizeof(A)/sizeof(A[0])计算数组大小,而在定义的函数体内,sizeof(A)是A这个指针类型的大小,不能计算数组大小。

最后

以上就是动人秋天最近收集整理的关于C++调用涉及数组的函数需要传入数组长度的原因的全部内容,更多相关C++调用涉及数组内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部