sizeof 关键词解析
很久以前,我就遇到这类的问题,今天算是有时间了,由我来和大家一起看看这个大家可能经常会遇到的问题。
在主函数内有效,而改进到方法中却失效
博主这里用的是64位电脑,在32位电脑中可能非main函数的方法内的for循环仅运行一次
main函数:
1 |
|
输出内容为:
15
进程已结束,退出代码为 0
非main函数:
1 |
|
输出内容为:
3
进程已结束,退出代码为 0
这里输出为3
是因为sizeof(arr)/sizeof(int)
为2,导致i
走到了下标1,所以结果为1+2=3
为什么在main方法中和main方法外不一样呢?
因为在solve方法中传参为(int arr[])
因为传的是数组所以一般等价于(int *arr)
众所周知,指针的占8字节(64位&8字节/32位&4字节),int
类型占4字节,所以理所当然导致了sizeof
关键词/方法不生效。
解决方案
- 这里可以放到全局中,直接使用数组
- 直接测量测量长度(循环遍历)