C - sizeof(字符串)结果小于应有的结果

Aez*_*zur 0 c sizeof

我知道字符串的长度应为n + 1,但由于某种原因,我的程序将sizeof(字符串)打印为n-2.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char name [] = "Tom";
    int x = sizeof(name);
    int i;

    printf("sizeof(name) = %d\n", i);

    for(i = 0; i < x; i++)
    {
        printf("Character at %d is %c\n", i, name[i]);
    }

    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

有谁能解释为什么?

SLa*_*aks 6

你在打印i,而不是x.
i从未初始化,因此您得到未定义的行为.