1 #include <cstdio>
2
3 using namespace std;
4
5 void seq_to_tree(char seq[]) {
6 puts("seq_to_tree:");
7 char tmp[20];
8 printf("sizeof(seq): %d\n", sizeof(seq));
9 printf("siezof(tmp): %d\n", sizeof(tmp));
10 }
11
12 int main() {
13 char seq[10];
14 puts("main():");
15 printf("sizeof(seq): %d\n", sizeof(seq));
16 seq_to_tree(seq);
17
18 return 0;
19 }
运行结果:
1 main():
2 sizeof(seq): 10
3 seq_to_tree:
4 sizeof(seq): 4
5 siezof(tmp): 20
这一段代码测试了在c/c++中数组类型的形参的sizeof与数组类型的变量sizeof不一样,说明了两个问题:
1. c/c++中数组类型的形参其实传进来就一个指针,而指针通常可以认为是 unsigned int *,那么大小为 4 不足为怪。
2. c/c++中的数组类型或者是struct类型的非基本类型是栈变量。