sizeof 运算符给出错误的结果
sizeof operator giving wrong results
struct val{
int first;
int second;
};
int maxChainLen(struct val p[],int n);
int main() {
int t;
cin>>t;
while(t--) {
int n;
cin>>n;
val p[n];
for(int i=0;i<n;i++) {
cin>>p[i].first>>p[i].second;
}
cout<<maxChainLen(p,n);
}
return 0;
}
int maxChainLen(struct val p[],int n){
int x=sizeof(p);
cout<<x<<endl;
return 0;
}
Input
1
5
5 24 39 60 15 28 27 40 50 90
在这里,我只是在 maxChainLen()
方法中找到数组 p
的 sizeof
,理想情况下应该是 p[0]
的 5*size
,即 - 5 *8 = 40 字节。
但是 sizeof(p)
和 sizeof(p[0])
都显示 8。
我知道这是非常基本的,但我不知道为什么 sizeof()
在这里给出错误的结果。
语法 int maxChainLen(val p[], int n)
等同于:int maxChainLen(val* p,int n)
- 该函数实际上接受一个指向 val
.
的 指针
当你调用这个函数时,你传递的数组衰减到一个指针。
您还可以查看 this answer 以了解确切的标准支持措辞。
struct val{
int first;
int second;
};
int maxChainLen(struct val p[],int n);
int main() {
int t;
cin>>t;
while(t--) {
int n;
cin>>n;
val p[n];
for(int i=0;i<n;i++) {
cin>>p[i].first>>p[i].second;
}
cout<<maxChainLen(p,n);
}
return 0;
}
int maxChainLen(struct val p[],int n){
int x=sizeof(p);
cout<<x<<endl;
return 0;
}
Input
1
5
5 24 39 60 15 28 27 40 50 90
在这里,我只是在 maxChainLen()
方法中找到数组 p
的 sizeof
,理想情况下应该是 p[0]
的 5*size
,即 - 5 *8 = 40 字节。
但是 sizeof(p)
和 sizeof(p[0])
都显示 8。
我知道这是非常基本的,但我不知道为什么 sizeof()
在这里给出错误的结果。
语法 int maxChainLen(val p[], int n)
等同于:int maxChainLen(val* p,int n)
- 该函数实际上接受一个指向 val
.
的 指针
当你调用这个函数时,你传递的数组衰减到一个指针。
您还可以查看 this answer 以了解确切的标准支持措辞。