为什么 main 函数和其他函数中的数组大小不同?

vir*_*chi 0 c++ arrays function

我对 C++ 并不陌生,但今天我发现 main 函数和其他函数中数组的大小不同。这是为什么?我想这与指针有关。

#include<bits/stdc++.h>
using namespace std;

void func(int arr[]){
    cout<<"func size: "<<sizeof(arr)<<"\n";
}

int main(){
    int arr[5];
    cout<<sizeof(arr)<<"\n";
    func(arr);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

您可以测试此代码以查看差异。

asm*_*mmo 5

因为数组衰减为指针什么是数组到指针衰减?

您可以通过引用传递数组来查看相同的大小,如下

#include <iostream>

template <class T, size_t n> void func(T (&arr)[n]) {
    std::cout << "func size: " << sizeof(arr) << "\n";
}

int main() {
    int arr[5];
    std::cout << sizeof(arr) << "\n";
    func(arr);
}
Run Code Online (Sandbox Code Playgroud)

演示

并查看为什么是“using namespace std;” 被认为是不好的做法? 为什么我不应该#include <bits/stdc++.h>?

  • 这是避免“C++”中数组衰减的正确方法 (2认同)

归档时间:

查看次数:

139 次

最近记录:

4 年,2 月 前