[英]Pointers and string literals in C
假設,在 C 語言中,我有以下代碼,其中指針變量“word”指向字符串文字。
const char * word = "HELLO";
為什么這有效 -
printf("\nword[1]: '%c'", word[1]);
printf("\nword[2]: '%c'", word[2]);
這不是嗎?
printf("\nAddress of word[1]: %p", word[1]);
printf("\nAddress of word[2]: %p", word[2]);
因為后者是字符而不是指針。 word[1]
與*(word + 1)
,您只需取消引用 char 指針。 結果是char
你需要:
printf("\nAddress of word[1]: %p", (void *)&word[1]);
printf("\nAddress of word[2]: %p", (void *)&word[2]);
或者
printf("\nAddress of word[1]: %p", (void *)(word + 1));
printf("\nAddress of word[2]: %p", (void *)(word + 2));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.