C语言字符串长度问题

今天在刷题,刷到一个C语言字符串长度的问题,求大佬解答。
题:
设char s[]="\t\ Name\\Address\n";,s的长度是:
答案是16.可是我怎么数都是15啊...请问我哪里错了?

clipboard.png

clipboard.png

阅读 3.3k
3 个回答

"abcd" 在 C 语言里,是一个字符数组(char[])。字符数组需要存放所有的字符,加上最后作为字符串结束标志的 '\0'

sizeof 由于一个字符数组,会得到字符数组的长度(而不是其中的字符串)。sizeof("abcd") == 5 ,因为字符数组的长度是 5 ( 'a', 'b', 'c', 'd', '\0')。

一般说的字符串的长度,不包括最后 '\0',不能用 sizeof 获取,需要用 strlen

  • 给字符数组s赋值的是一个字符串,字符串是以null character ('0')为结束标记的。
  • sizeof()运算符是获取分配给字符数组s的内存量。

如果你这样赋值:

int main(void)
{
    char s2[] = { '\t', '\ ', 'N', 'a', 'm', 'e', '\\', 'A', 'd', 'd', 'r', 'e', 's', 's', '\n' };

    printf("%d\r\n", sizeof(s2));

    return 0;
}

得到的就会是15。

一目了然

字符串定义的时候默认后面会有一个0结束符。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进