2013-10-11 44 views

回答

1

*(a+1)相同a[1]這是一個char,而不是char *printf預計爲%s

EDIT:澄清:printf需要一個地址%s說明符,a+1是這樣一個地址(字符串中的第二個字符的即地址),但*(a+1)然後給出在該地址的。這只是一個字符,並且在所有可能的情況下都不是printf的有效內存位置。

+0

可能是完全錯誤的,但據我所知,在這種情況下+ 1給出字符串的地址,但不是存儲在字符串中的值。所以我用*(a + 1)來獲得從w開始的字符,即喚醒(儘管不起作用)。我不明白它是如何印刷的,儘管我們只給出了地址。 –

+0

'a + 1' *是字符串中第二個字符的地址,但是'*(a + 1)'給出了該地址的值。 'printf'需要地址,而不是值。 – Kninnug

+0

感謝您的幫助 –

5

你解引用指針,這使得它成爲char而是試圖輸出字符串。您的打印語句更改爲printf("%s\n", a+1);

+0

可能是完全錯誤的,但據我所知在這種情況下+ 1給出的字符串的地址,但不是存儲在字符串中的值。所以我用*(a + 1)來獲得從w開始的字符,即喚醒(儘管不起作用)。我不明白它是如何印刷的,儘管我們只給出了地址。 –

0

你不想defrefeence的char *

printf("%s\n", (a+1)); 

你想要做什麼。

+0

可能是我完全錯了,但據我所知在這種情況下+ 1給出了字符串的地址,但沒有存儲在字符串中的值。所以我用*(a + 1)來獲得從w開始的字符,即喚醒(儘管不起作用)。我不明白它是如何印刷的,儘管我們只給出了地址。 –