2011-10-08 89 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部分。