Sco*_*ott 4 c arrays initialization
我很好奇C如何处理数组初始化.我的程序中有以下代码:
UChar match[] = {0xdf, 'a', 'b', '\0'};
Run Code Online (Sandbox Code Playgroud)
基本上,这是初始化UTF-16字符串.在这种情况下,UChar是16位.
我的问题是:我需要字符串末尾的尾随NULL字节,但是有必要将它包含在初始化中,还是C会自动包含所有数组初始化的字节?
Hex*_*gon 11
是的,您需要添加一个终止'\ 0'(顺便说一下,不是NULL) - C只对字符串文字执行,而不是对任何数组执行.
例如 -
char* str = "12345";
Run Code Online (Sandbox Code Playgroud)
将是一个包含6个字符的数组,第六个是'\ 0'.
同样的 -
char str[] = "12345";
Run Code Online (Sandbox Code Playgroud)
它将有6个项目.
但是 -
char str[] = { '1', '2', '3', '4', '5' };
Run Code Online (Sandbox Code Playgroud)
将有5个项目,没有终止'\ 0'.
(在问题初始化中你已经有'\ 0',所以你不需要别的东西).
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |