2011-10-08 84 views
0

我知道當函數之間傳遞字符串時C字符串處理

char * str幾乎與函數頭中的char str [n]相同。

然而,我想知道爲什麼會工作,什麼用繩子工作時

我發現,如果我「中的char *」首先聲明一個那麼=字符串賦值給它」這兩個之間的區別串;」 這不會工作

有人可以告訴我這是什麼?

有無論如何我可以指定一個數組到另一個數組?像Java中

感謝

char[] one; 
char[] two={'a','b'}; 
one=two; 

回答

1
char[] one; 

的語法是錯誤的。這不是Java。

char* one; 
char two[]={'a','b'}; 
one = two; 

這是可行的,因爲數組衰減爲指針。

「char * str幾乎與函數頭中的char str [n]相同。」

NO。數組和指針是兩個不同的概念。他們兩個都不一樣。

+0

指向相同的內存位置:) –

+0

作爲函數參數聲明,'char * str'和'char [n]'*是*相同的;他們都聲明'str'作爲指針。 (這隻適用*參數。) –

+0

@xjaphx:你是什麼意思? –

0

ArrayPointer是兩個不同的概念。我想你應該基本開始緩慢,這是一個文件解釋:http://www.cs.bu.edu/teaching/cpp/string/array-vs-ptr/

+0

字符串和數組的概念在cpp和c中是一樣的嗎?感謝您的鏈接 – kun

+0

在C++中,您有'std :: string',這是一個處理字符串的類。但是,您仍然可以使用C風格的字符串。在C中,'string'是一個不是類型的概念,是一個以'\ 0'(NULL)字符結尾的字符數組。這是差別! –

+0

@xjaphx:'NULL'是一個空*指針*常量,不是空字符。 –

0

對於C(和C++)中數組和指針之間的關係,我見過的最好的解釋是comp.lang.c FAQ的第6部分。