C语言 -- sizeof和strlen的用法
1. sizeof和strlen的对比
1.1 sizeof
- sizeof 计算变量所占内存空间大小的,单位是字节,如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。
- sizeof 只关注占用内存空间的大小,不在乎内存中存放什么数据。
测试代码1如下:
测试代码2如下:
1.2 strlen
- strlen 是C语言库函数,功能是求字符串长度。函数原型如下:
size_t strlen ( const char * str );
- 统计的是从 strlen 函数的参数 str 中这个地址开始向后, \0 之前字符串中字符的个数。
- strlen 函数会一直向后找 \0 字符,直到找到为止,所以可能存在越界查找。
测试代码如下:
测试代码2如下:
1.3 sizeof 和 strlen的对比
测试代码如下:
2. 数组和指针笔试题解析
在做题之前,我们必须要知道的知识点如下:
数组名的理解:
- sizeof(数组名),数组名表示整个数组,计算的是整个数组的大小,单位是字节
- &数组名,数组名表示整个数组,取出的数组的地址除此之外.
- 所有遇到的数组名都是数组首元素的地址
注意
32位平台下地址是32个bit位,指针变量(地址)大小是4个字节
64位平台下地址是64个bit位,指针变量(地址)大小是8个字节
注意指针变量的大小和类型是无关的,只要指针类型的变量,在相同的平台下,大小都是相同的。
x64环境下指针变量大小是8
x86环境下指针变量大小是4
以下代码均在x86环境下演示:
2.1 一维数组
2.2 字符数组
代码1:
代码2:
代码3:
代码4:
代码5:
代码6:
2.3 二维数组
3. 指针运算笔试题解析
3.1 题目1:
下图是分析:
3.2 题目2
下图是分析:
3.3 题目3
下图是分析:
3.4 题目4
下图是分析:
3.5 题目5
下图是分析:
3.6 题目6
下图是分析:
3.7 题目7
下图是前三行代码的图:
根据前三行代码的图分析后面的代码,可以得到正确答案,由于分析过程会修改上图,我就暂时不分析了,感兴趣的自己分析下吧。
完