我是C的新手,我们需要手动将终止'\ 0'字符添加到字符串时有点困惑.给定此功能来计算字符串长度(为清楚起见):
int stringLength(char string[])
{
int i = 0;
while (string[i] != '\0') {
i++;
}
return i;
}
Run Code Online (Sandbox Code Playgroud)
它根据空终止字符计算字符串的长度.那么,使用以下情况,'\ 0'字符的作用是什么(如果有的话)?
情况1:
char * stack1 = "stack";
printf("WORD %s\n", stack1);
printf("Length %d\n", stringLength(stack1));
Run Code Online (Sandbox Code Playgroud)
打印:
WORD stack
Length 5
Run Code Online (Sandbox Code Playgroud)
案例2:
char stack2[5] = "stack";
printf("WORD %s\n", stack2);
printf("Length %d\n", stringLength(stack2));
Run Code Online (Sandbox Code Playgroud)
打印:
WORD stack???
Length 8
Run Code Online (Sandbox Code Playgroud)
(这些结果每次都有所不同,但永远不正确).
案例3:
char stack3[6] = "stack";
printf("WORD %s\n", stack3);
printf("Length %d\n", stringLength(stack3));
Run Code Online (Sandbox Code Playgroud)
打印:
WORD stack
Length 5
Run Code Online (Sandbox Code Playgroud)
案例4:
char stack4[6] = "stack";
stack4[5] = '\0'; …Run Code Online (Sandbox Code Playgroud) 我正在试图找到一种方法来为64位整数创建一个小端/大端转换(uint64_t),虽然我在网上找到了很多关于如何做的答案,但没有一个解释到底是怎么回事.例如,要获取整数的第n个字节,我发现了这个响应:
int x = (number >> (8*n)) & 0xff;
即使我理解了位移组件(向右移8n位),我也看不到&和0xff进来的位置,除了&之外它们是什么意思&是一个按位AND运算符.
那么,这种逻辑如何应用于64位整数的big-endian/little-endian字节交换方法?
先感谢您.