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 }
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
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类型的非基本类型是栈变量。