簡體   English   中英

我不明白指針的這種用法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM