1.对于int[]数组
sizeof(arr)=4*元素数量
猜测:可能与int型占4个位有关
若:将sizeof(arr)用于int型数组的遍历输出
则:前n项会输出正确的元素值,后(4*n-n)项(没有实际值的存储位)会输出随机值,但不会中断程序的运行,也不会报数组越界的错。
若:用for each语句遍历,采用类似C#的手法输出。
则:只会输出正确的有效项。
2.对于char[]数组,有一种特殊的函数
strlen(arr)=元素数量+?;
猜测:n的不定性很大,可能受数字,中英文字符,中文字符的单引号/双引号的使用影响。
可以确定它将字符串结束符‘\0’也纳入了长度统计。
若:用strlen(arr)遍历char[]数组元素
则:会正确输出前n个字符,但后续输出“空”,因此不能将strlen(arr)当作常用遍历方式
若:采用sizeof(arr)遍历字符数组
则:中文字符‘呀’和双引号“啊”,居然有些算作1(单引中文)或3(双引中文)单位,以前学习到记得统一都是2单位,原因未知。
但是输出结果中只有数字和英文,中文字符‘啊’由于未知原因被吞了。
若:用for each遍历输出char[]
则:可行,但中文字符‘呀’和双引号“啊”,依旧被吞。
在:cout输出中,‘呀’显示为53693,而双引“啊”正确显示为啊
3.关于C++中的foreach语法糖语句测试<