cc++ 中的 sizeof 运算符和数组类型的变量与形参

it2025-12-21  17

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

转载于:https://www.cnblogs.com/nysanier/archive/2011/03/13/1982634.html

最新回复(0)