#include "stdio.h"
void main()
{
char firstName[1] = "1";
char middleName[1] = "1";
char lastName[1] = "1";
printf("%p\t%s\n",firstName,firstName);
printf("%p\t%s\n",middleName,middleName);
printf("%p\t%s\n",lastName,lastName);
}
我編譯此代碼使用GCC 4.8.2,什麼是困惑我就是爲什麼它打印:印刷三個字符串內容相同的給出不同的結果
> 根@ Ubuntu的:〜#。 /主
0x7fff7124273d 111
0x7fff7124273e 11
0x7fff7124273f 1
我認爲它應該打印:
0x7fff7124273d 1
0x7fff7124273e 1
0x7fff7124273f 1
你能幫我嗎?
爲char數組分配2個字節而不是1個。您總是必須爲'\ 0'字符串終止符保留1個附加字符。 – SomethingSomething 2014-10-01 11:05:23
請記住,字符串應該以''\ 0''結尾。 – Maroun 2014-10-01 11:05:24
您的陣列中沒有足夠的空間用於將'\ 0' – 2014-10-01 11:05:36