我是C編程的新手。我對指針的混沌行爲感到困惑。特別是當涉及到字符串和數組時。指向字符串的指針
我知道,我不能寫這樣,
#include <stdio.h>
int main()
{
int *number=5;
printf("%d",*number);
}
因爲顯然它會嘗試寫memory.And第5的位置,這將崩潰program.I已初始化「號」。
但是,當涉及到字符串我可以寫像,
#include <stdio.h>
int main()
{
char *name="xxxxx";
printf(name);
}
而且它也能工作。所以這意味着它隱式地初始化「名稱」指針。我也知道name = & name [0]但是我也發現了name = &的名字。怎麼會這樣? 因爲,對我來說,它看起來有兩個同名的變量。任何人都可以告訴我字符串是如何在內存中創建的嗎?(這一次我假設它創建了名稱[0] ..... name [n-1]和另一個名爲「name」的變量(一個指針)把名字的位置[0]。看起來是我錯了。)
PS: - 我的英語可能不好,如果有人可以給我一個關於上述問題的鏈接,將不勝感激。
C中指針的行爲不是混沌的。它是明確的。 – 2013-05-02 08:50:26
如果'name'的類型爲'char *','name'與'&name'完全不同。只有'name'是'char []',並且只有值是相同的,但不是類型時纔是如此。 'char name []'name是'char []'類型的名字,但是name的名字是'char(*)[]' – 2013-05-02 09:13:23
另外,請一次提出一個問題,而不是把所有讓你困惑的問題都放在同一個題。 – 2013-05-02 09:20:11