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/p/1982634.html