爲什麼它是
p+=*string[2]-*string[1]
而不是p+=string[2]-string[1]
(不含星號)?如何使用C中的字符串和指針?
#####我編輯了代碼.........做了「char * p = string;」可以替換爲「char p = * string [0];」?res[0]=*p;
它的值是'c'
爲什麼?爲什麼p
在單詞字母上移動,而*string[1]
在單詞間而不是字母間移動?
代碼的輸出是
Ç
int main (void)
{
char* strings[]={"abcdb","bbb","dddd"};
char*p=*strings;
char res[2];
p+=*string[2]-*string[1];
res[0]=*p;
p+=3;
res[1]=*p;
printf("%s\n",res);
return 0;
}
'string'定義在哪裏?這是'字符串'的錯字錯誤嗎?請注意,代碼應該打印「cb」而不是「c」,但由於「res」是未終止的字符串,因此您有未定義的行爲。 –
@lucky該程序具有未定義的行爲,其原因不是Weather Vane指出的。原因是你試圖將指針解引用超過字符串字面值「abc」這就是這個語句res [1] = * p;已經無效。 –
@VladfromMoscow您的意思是*除了我寫的內容,還是我對未終止字符串的評論是錯誤的? –