经过数组传参后,为什么在自定义函数中用sizeof得到是首元素大小?

都说数组名为首元素地址,那么数组名就是一个指针了,那为什么在main函数中用sizeof得到的是整个数组的大小,在其他的自定义函数中,经过数组传参,得到首元素地址后,用sizeof得到的就是首元素大小,两者不都是首元素地址,不都是指针吗?

都说数组名为首元素地址,那么数组名就是一个指针了

这句话就是误人子弟.

你还是不太理解数组名什么时候代表数组, 什么时候代表数组首元素指针.

说起来比较简单, 理解起来不容易.

当数组名被调用时, 会退化为指针, 当数组名主动调用时是数组.

问题是通常对象主动调用比如 . , ->, =, ++, 数组都不能调用, 但sizeof()运算符除外, 你再思考下, 指针是否可以用前面的大部分运算符, 大概能明白, 这两者天差地别.

主程序之所以能得到是编译器去计算的,sizeof 不是函数,是运算符。
函数内参数就不同了,它是谁传进来的,这个运行了才知道,编译器就无能为力了了,就退化为单个元素的指针。

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^