2013-10-07 30 views
0

我知道一個字符串應該是n + 1的長度,但由於某種原因,我的程序將sizeof(字符串)打印爲n-2。C-sizeof(字符串)結果小於它應該是

#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; 
} 

任何人都可以解釋爲什麼嗎?

+3

您正在打印未初始化的'i'的值。 –

+0

閱讀你的編譯器警告。 – SLaks

回答

6

您正在打印i而不是x
i從未初始化,所以你得到未定義的行爲。

+1

當你使用x代替i時,它給出了4,這是你期望的n + 1。 – DAhrens

+1

啊,我明白了。問題是我是個白癡。謝謝。 XD – Aezur

相關問題