c++中sizeof函數求數組長度的一些坑

#include<iostream>
#include<string>
using namespace std;
void test(int *a){//數組參數實際以數組首地址指針傳遞
    int len = sizeof(a) ;//指針字節數
    char *p;
    int len2=sizeof(p);//不論指針類型,32位系統指針4字節;編譯器爲了兼容性,這裏取32位地址
    int len3 = sizeof(a) / sizeof(a[0]);//指針4個字節,int 4個字節
    cout << len <<len2<<len3<< endl;//結果4 4 1
}
int main() {
    int a[8] = { 1,2,3,4,5,6,7,8 };
    int len = sizeof(a) / sizeof(a[0]);//這裏a指針指向整個數組,a[0]爲首元素所佔字節,結果 8
    cout << len << endl;
    test(a);
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章