strlen和sizeof本身的区别
szieof是一个运算操作符,在使用时无需声明头文件,它的参数可以是数据类型,数组,指针及函数等等
strlen是一个库函数,在使用前需要声明string.h头文件,它的参数必须是字符型指针(char* )
对于数组
首先,数组和指针是两个不相干的概念,然而,C语言中很多情况下数组都能隐式转化为指针,指针也能当作数组一样使用(用[ ]来取下标)
_32位系统下,一个指针大小为四个字节_
字符数组
1 | char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' }; |
字符串
1 | char arr[] = "abcdef"; |
指针
1 | char* p = "abcdef"; |
二维数组
1 | int a[3][4] = |
小结
对于sizeof和strlen来说,要时刻注意输入参数的类型,有时候多一个符号或少一个符号就会发生隐式转换,sizeof来者不拒,各种类型都能算,但是strlen不一样,它的输入参数只能是char* (它就是一个求字符串长度的库函数,不要太为难它了)。