1.sizeof
用于测数据类型的长度的函数(详细见第3篇)
2.strlen
其计算长度时只有遇到\0才会停止,并且\0不会计算在内
如char arr[]={'a','1','b'};
printf("%d\n",strlen(arr));
结果是个随机数!strlen读内存中的数据,其读取不会因为到'b'就停止,在内存中只有遇到\0才会停止
法1:for循环打印地址
#include <stdio.h>
int main()
{char arr[] = {'a','b','c'};for (int i = 0; i < strlen(arr); i++){printf("%p\n",&arr[i]);}printf("%d", strlen(arr));return 0;
}
到00F5FBF6停止打印
法2.可借助VS调用内存说明
先下断点后&arr
0x012FF93F处是00相当于/0,strlen停止读取
解释arr+strlen:前面%p是打印地址,arr代表数组中的首元素,取arr首元素的地址然后加上偏移量(strlen(arr))即可找到\0的地址