数组和指针的区别:
1 | int GetSize(int data[]){ |
答案是输出:20, 4, 4
sizeof 是个关键字而不是函数,sizeof(data1)是求数组的大小,这里有 5 个 int 型元素,所以总共 20 个字节,data2 声明为指针,尽管指向了一个数组,但本质上只是一个指针,所以 sizeof(data2)的语义范围收缩了,无法仅通过一个指针得知其所指范围。在 32 位系统上一个指针是 4 字节,所以结果就是 4。在 C/C++中,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针,因此 size3 的结果也是 4。所以 C++传数组做参数至少两个参数起步,一个指针,一个数组长度。