[英]I don't understand this use of pointers
我試圖理解指針的這種用法。 據我所知,到目前為止,值指針持有的是對另一個實體的 memory 地址的引用,當使用*
符號時,我們訪問指針引用的實體的值。
但是,在我正在使用的教程中遇到的這段代碼中, ptr_str
指針的字符串值不是 memory 地址,所以我不明白*ptr_str
(我希望它是引用的值entity) 在 for 循環中使用。
char *ptr_str; int i;
ptr_str = "Assign a string to a pointer.";
for (i=0; *ptr_str; i++)
printf("%c", *ptr_str++);
這個:
ptr_str = "Assign a string to a pointer.";
是這個的簡寫:
// Somewhere else:
char real_str[] = {'A', 's', 's', 'i', 'g', ..., '.', '\0'};
// In your main():
ptr_str = real_str;
// or
ptr_str = &real_str[0];
換句話說,像"Hello World"
這樣的字符串文字實際上是指向保存字符串的字符數組的指針。 這一切都是由編譯器透明地完成的,因此乍一看可能會令人困惑。
如果您好奇,請查看我的另一個答案,我在其中更詳細地解釋了這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.