請考慮此代碼。瞭解字符串和數組
int main()
{
char *s, *t;
s = malloc(4 * sizeof(char));
strcpy(s, "foo");
t = s;
printf("%s %s\n", s, t); // Output --> foo foo
strcpy(s, "bar"); // s = "bar"
printf("%s %s\n", s, t); // Output --> bar bar
}
有2個字符串s
和t
。首先,我將s
設置爲"foo"
,然後將t
指向s
。當我打印字符串時,我得到了foo foo
。
然後,複製"bar"
到s
並再次打印,我得到bar bar
。
爲什麼t
的值在這種情況下發生了變化? (我複製"bar"
到s
爲什麼t
改變)。
現在,當我改變strcpy(s, "bar")
到s = "bar"
-
int main()
{
char *s, *t;
s = malloc(4 * sizeof(char));
strcpy(s, "foo");
t = s;
printf("%s %s\n", s, t); // Output --> foo foo
s = "bar"
printf("%s %s\n", s, t); // Output --> bar foo
}
此代碼給我foo foo
和bar foo
。
爲什麼在這種情況下沒有改變?
**版主說明**:玩的很好。保留主題的意見(意思是他們應該要求澄清)。如果你想打開關於這個問題的優點的討論,去[這裏](http://meta.stackoverflow.com)。 –
我已經刪除了你的問題的第二部分,如果你仍然想問它,請另寫一篇文章。你應該每個帖子只問一個問題。 – sashoalm