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

 
  
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值