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
[这里我只是在sizeof
方法内找到数组p
的maxChainLen()
,理想情况下应为5*size
的p[0]
,即5 * 8 = 40bytes。但是sizeof(p)
和sizeof(p[0])
都显示8。我知道这是非常基本的,但是我不知道为什么sizeof()
在这里给出错误的结果。
语法int maxChainLen(val p[], int n)
等效于:int maxChainLen(val* p,int n)
-该函数实际上接受val
的pointer。调用此函数时,会将decays传递给指针。
您也可以看到this answer以获取标准支持的确切措辞。