C语言函数精讲:从入门到精通( 指针(5))
1. sizeof和strlen的对⽐
1.1 sizeof
在学习操作符的时候,我们学习了 sizeof , sizeof 计算变量所占内存内存空间⼤⼩的,单位是 字节,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。
sizeof 只关注占⽤内存空间的⼤⼩,不在乎内存中存放什么数据。
输出结果都为四
1.2 strlen
strlen 是C语⾔库函数,功能是求字符串⻓度。函数原型如下:
size_t strlen ( const char * str )
统计的是从 strlen 函数的参数 str 中这个地址开始向后, \0 之前字符串中字符的个数。 strlen 函数会⼀直向后找 \0 字符,直到找到为⽌,所以可能存在越界查找。
输出结果为 随机值,3,1,1.
1.3 sizeof 和strlen的对⽐
2. 数组和指针笔试题解析
2.1 ⼀维数组
输出结果为16,4/8,4,4/8,4,4/8,16,4/8,4/8,4/8.
2.2 字符数组
输出结果为6,4/8,1,1,4/8,4/8,4/8.
输出结果为随机值,随机值,越界访问,越界访问,随机值,随机值-6,随机值-1
输出结果为7,4/8,1,1,4/8,4/8,4/8.
输出结果为6,6,代码错误越界访问,代码错误越界访问,6,随机值,5.
输出结果为4/8,4/8,1,1,4/8,4/8,4/8
输出结果为6,5,代码错误越界访问,代码错误越界访问,随机值,随机值,5.
2.3 ⼆维数组
输出结果为48,4,16,4/8,4,4/8,16,4/8,16,16,16
数组名的意义:
1. sizeof(数组名),这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩。
2. &数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址。
3. 除此之外所有的数组名都表⽰⾸元素的地址。
3. 指针运算笔试题解析
输出结果为2,5。
输出结果为
输出结果为 1.
输出结果为FFFFFFFC -4;
输出结果为10,5.
输出结果为 at