在刷題的時候遇到了這樣的一道問題
在32位的機器中
void
example(
char
acWelcome[]){
printf(
"%d"
,sizeof(acWelcome));
return
;
}
void
main(){
char
acWelcome[]=
"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