1.sizeof和strlen的对比
(1)sizeof是操作符,只关注占用内存空间的大小,不在乎内存中存放什么数据
strlen是C语言库函数,功能是求字符串长度,函数原型:size_t strlen(const char *str),统计的是从函数参数str开始直到\0间的字符个数,由于结束条件是遇到\0,所以strlen可能存在越界查找
(2)归纳易错点
arr为字符数组中第一个元素的地址,整个数组中没有\0,strlen 不知道在哪里停止计数,所以结果是不可知的
arr为字符数组中第一个元素的地址,解引用后为字符a,字符a的ASC||码值为97,strlen函数默认把97看作地址,向后统计字符串长度,97作为地址的空间不一定属于当前程序,程序可能会报错
\0也算一个字符
这种写法是把a的地址赋给p
int arr[i][j]中arr表示二维数组名,a[i]表示一维数组名,有时可作地址,arr表示地址时指整个首个一维数组的地址(二维数组可以看作元素为一维数组的数组)
2.指针运算笔试题易错归纳
初始化数组的大括号中很容易看成大括号,这里是小括号,表示逗号表达式,所以数组初始化实际上是{1,3,5,0,0,0}