运营商退货冲突的大小

Md *_*sal -1 c c++ size

这是一些代码

class DengkleTryingToSleep{
public:
int minDucks(int ducks[]);
int temp(int ducks[]){
int size=sizeof(ducks);
cout<<"sizeof="<<size<<"\n";
}
};


int main (int argc, const char * argv[])
{
DengkleTryingToSleep dt;
int arr[]={9,3,6,4};

cout<<"sizeof "<<sizeof(arr);
cout<<"\nsizeof from function "<<dt.temp(arr);

return 0; 
}
Run Code Online (Sandbox Code Playgroud)

并输出这个

sizeof 16
sizeof from function sizeof=8
Run Code Online (Sandbox Code Playgroud)

而且我不知道它是如何工作的,因为它返回16(正如在main中调用时所预期的那样)并且从函数调用时返回8

Bri*_*ach 5

因为数组在传递给函数时会衰减为指针.你得到temp函数中指针的大小.

如果你需要知道函数中数组的长度......你也必须传入它.

  • 你*不能*那样做.正如我所说,你必须传递长度和数组.例如...`temp(int ducks [],int ducksLength)`.如果你需要知道*size*你必须做一些像`temp(int ducks [],int ducksLength,size_t memberSize)`并且相乘; `ducksLength*memberSize` (2认同)