下面是一个将数组元素逆转的C++源代码, 今天发现一个有趣而且不知道原因的问题。为什么reverse里面计算数组长度, int len=sizeof(A)/sizeof(int);为什么结果始终为1。
#include <iostream>
using namespace std;
class Solution1
{
public:
void reverse(int A[], int n){ //n represent the length of A.
if(n==0 || n==1) return;
//int len=sizeof(A)/sizeof(int);
int lhs=0;
int rhs=n-1;
while(lhs<rhs){
swap(A[lhs], A[rhs]);
lhs++;
rhs--;
}
}
private:
void swap(int &a, int &b){ //exchange the number.
int temp=a;
a=b;
b=temp;
}
};
int main(){
Solution1 s;
int A[]={1, 3, 5, 6, 7, 8, 9, 10 , 25, 23, 14};
int len=sizeof(A)/sizeof(int);
s.reverse(A,len);
for(int i=0; i<len; i++){
cout<<A[i]<<" ";
}
}