2016-04-06 168 views
-6
char *str = "hello"; 

在這樣的代碼中,我可以使另一個指針 (例如,可以有兩個指針指向同一個字符串嗎?

char *strptr = NULL; 

,使這個指向字符串str,「你好」(是這樣的:strptr-> STR- > 「你好」strptr - > 「你好」 < -str

我試過雙指針,或改變指針類型..但都以失敗告終

+0

'strptr-> STR - > 「你好」 或strptr - >的 「hello」< - str' - 這些都不是有效的。你有什麼問題?如何將一個變量複製到另一個變量?請閱讀C書。在這裏提出特定的問題不會給你全貌。 – Olaf

回答

1
char * str = "hello"; 

您現在想要第二個指針,就像第一個指針一樣。因此,請像第一個char * strptr一樣申報。

現在它應該指向同樣的事情。現在你會怎麼做?你如何製作一些與A相同類型的東西,保持與A相同的信息?

您指派它。

char * strptr = str; 

注意到,這兩個strstrptr目前指向只讀存儲器,並應可能const出於這個原因。 (除非你真的知道你在做什麼,並且想用指針指向以後的其他東西。)

+0

菊花鏈像@DevSolar建議的作品,但對於更詳細的答案檢查此鏈接:http://stackoverflow.com/questions/3815400/c-pointers-point-to-the-same-address – PseudoAj

3

是的,2個指針確實可以指向相同的數字。

const char *a = "str"; 
const char *b = a; 

他們現在指向相同的字符串。

1

而問題的另一部分:

char * str = "hello"; 
char ** strptr = &str; 
+0

只有這段代碼顯示正是我想!自從'cout' hsa被C了以後,非常感謝你 – WoW

1

你可以做

char *strptr = str; 

所以你會得到strptr - > 「你好」 < - 海峽

0

指針引用內存地址。您可以通過使用&運算符來獲得內存地址本身,雙指針指向指向另一個內存地址的內存地址,因此您將擁有所謂的strcpr->str->"hello"這是指向另一個指針的指針。下面是一個例子:

char *str = "Hello!"; 
char **strp = &str; 
// The memory address for the string 
printf("%p\n", &str); 
// This would print the same address as the previous command as 
// they both reference the same string 
printf("%p\n", strp); 
// This prints the value of your string 
printf("%s\n", *strp); 

請注意雙指針如何指向第一個字符串的內存地址。輸出應該是Hello!

編輯:C語法

+1

? –

+0

謝謝〜!!很好的幫助!如果你不介意,我可以多問一點嗎? – WoW

+0

如果你不介意,我可以多問一點嗎? 'char * str =「str」; \t char ** strptr = &str; \t char a [] =「abc」; \t * strptr = a; \t printf(「%s」,* strptr); \t str =「no」; \t printf(「%s」,* strptr); ' – WoW

相關問題