數組形參

在刷題的時候遇到了這樣的一道問題

在32位的機器中

voidexample(characWelcome[]){
    printf("%d",sizeof(acWelcome));
    return;
}
voidmain(){
    characWelcome[]="Welcome to Huawei Test";
    example(acWelcome);
    return;
}
請問輸出的是多少?

答案是4,在C++Primer中當數組形參定義爲非引用時,此時傳遞的實際上是指針,是實參指向數組第一個元素的指針,所以結果是4

如果傳遞是引用則輸出的是23例如:

#include <iostream>
using namespace std;

void example(char (&acWelcome)[23]) {
    printf("%d", sizeof(acWelcome));
    return;
}

int main() {
    char acWelcome[] = "Welcome to Huawei Test";
    example(acWelcome);
    return 0;
}

當數組的引用做形參的時候,整個數組就會傳遞過去,所以答案是23

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