sizeof计算变量所占内存空间大小,单位是字节,如果操作数是类型,计算的是使用类型创建的变量所占内存空间的大小。sizeof只关注占用内存空间的大小,不在乎内存中存放什么数据。
strlen是C语言库函数,功能是求字符串长度。函数原型如下:
size_t strlen ( const char * str );
统计的是从strlen函数的参数str中这个地址开始向后,\0之前字符串中字符的个数。strlen函数会一直向后找\0字符,直到找到为止,所以可能存在越界查找。 strlen关注到了字符串中具体的内容。
| sizeof | strlen |
|---|---|
| 1. 是操作符 2. 计算操作数所占内存的大小,单位是字节 3. 不关注内存中存放什么数据 | 1. 是库函数,使用需要包含头文件string.h 2. 是求字符串长度的,统计的是\0之前字符的个数 3. 关注内存中是否有\0,如果没有\0,就会持续往后找,可能会越界 |
数组名的意义:
sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。&数组名,这里的数组名表示整个数组,取出的是整个数组的地址。- 除此之外所有的数组名都表示首元素的地址。(二维数组的首元素是一个一维数组)
小试牛刀:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char* c[] = { "ENTER","NEW","POINT","FIRST" };
char** cp[] = { c + 3,c + 2,c + 1,c };
char*** cpp = cp;
printf("%s\n", **++cpp);
printf("%s\n", *--*++cpp+3);
printf("%s\n", *cpp[-2]+3);
printf("%s\n", cpp[-1][-1]+1);
return 0;
}