char a[] = {'a','b','c'}; cout << strlen(a) << endl; 输出 6 char a[3] = {'a','b','c'}; cout << strlen(a) << endl; 输出 6 char a[4] = {'a','b','c'}; cout << strlen(a) << endl; 输出 3 strlen 会一直往前找直到找到'\0',但是为什么第一第二个会返回 6 呢?
人生最曼妙的风景,竟是内心的淡定与从容!
对无
先分析您的代码:
获取字符串长度 返回 C 字符串 str 的长度。 C 字符串的长度由终止空字符决定:C 字符串的长度等于字符串开头和终止空字符之间的字符数(不包括终止空字符本身)。 这不应该与保存字符串的数组的大小混淆。例如: char mystr[100]="测试字符串"; 定义了一个大小为100个字符的字符数组,但是初始化mystr的C字符串的长度只有11个字符。因此,虽然 sizeof(mystr) 的计算结果为 100,但 strlen(mystr) 返回 11。
获取字符串长度
返回 C 字符串 str 的长度。
C 字符串的长度由终止空字符决定:C 字符串的长度等于字符串开头和终止空字符之间的字符数(不包括终止空字符本身)。
这不应该与保存字符串的数组的大小混淆。例如:
char mystr[100]="测试字符串";
定义了一个大小为100个字符的字符数组,但是初始化mystr的C字符串的长度只有11个字符。因此,虽然 sizeof(mystr) 的计算结果为 100,但 strlen(mystr) 返回 11。
字符数组是字符数组,字符串是字符串。只有字符串才有
雷雷
对无
先分析您的代码:
雷雷进一步理解
雷雷 雷雷strlen 说明
字符数组是字符数组,字符串是字符串。只有字符串才有
雷雷