概述
在写一个简单的选择排序时,发现如果不在调用排序函数时传入数组大小,程序得不到预期结果,经过调试,发现原来在不同地方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++调用涉及数组的函数需要传入数组长度的原因所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复