在刷题的时候遇到了这样的一道问题
在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