我知道我们必须使用空字符来终止这样的字符串数组:
char str[5] = { 'A','N','S','\0' };
但我只是想知道为什么必须使用空字符来终止这样的数组?
另外,我们为什么不添加一个空字符来终止这些:-
char str1[5]="ANS";
我知道我们必须使用空字符来终止这样的字符串数组:
char str[5] = { 'A','N','S','\0' };
但我只是想知道为什么必须使用空字符来终止这样的数组?
另外,我们为什么不添加一个空字符来终止这些:-
char str1[5]="ANS";
NULL 终止是 C 中 char 数组与字符串(以 NULL 终止的 char-array)的区别。大多数字符串操作函数依赖 NULL 来知道字符串何时完成(以及它的工作完成),并赢得'不适用于简单的字符数组(例如,它们将继续工作超出数组的边界,并继续工作,直到它在内存中的某处找到 NULL - 通常会破坏内存)。
在 C 中,0(整数值)被认为是布尔值 FALSE - 所有其他值都被认为是 TRUE。 if、for和while使用 0 (FALSE) 或非零 (TRUE) 来阻止如何分支或 if 循环。char 是整数类型,NULL 字符 (\0) 实际上只是一个十进制整数值为 0 的 char - 即。错误的。这使得为诸如操作或复制字符串之类的事情制作函数变得非常简单,因为只要它正在处理的字符为非零(即 TRUE),它们就可以安全地循环,并在遇到 NULL 字符时停止(即。 FALSE) - 因为这表示字符串的结尾。它制作了非常简单的循环,因为我们不必比较,我们只需要知道它是 0 (FALSE) 还是不是 (TRUE)。
例子:
字符源[]="测试"; // 实际上:测试 \0('\0' 是 NULL 字符) 字符目的地[8]; 诠释我=0; char curr; 做 { 当前=源[i]; dest[i] = 当前; 我++; } 而(当前);//只要条件为真就会循环,即。非零,除 NULL 外的所有字符。
这不是必需的,但如果您使用任何标准库,他们都期望它。