【问题标题】:C string processingC字符串处理
【发布时间】:2011-10-08 06:42:08
【问题描述】:

我知道在函数之间传递字符串时

char *str 与函数头中的 char str[n] 几乎相同。

但是我确实想知道为什么这会起作用,以及在使用字符串时这两者之间有什么区别

我发现如果我先声明一个“char *in”然后给它分配一个字符串“in=string;” 这行不通

有人能告诉我这背后的原因吗?

无论如何我可以将一个数组分配给另一个数组吗?就像在 Java 中一样

谢谢

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

【问题讨论】:

    标签: c arrays string


    【解决方案1】:
    char[] one;
    

    语法错误。这不是 Java。

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

    这是有效的,因为数组衰减到一个指针。

    "char *str 和函数头中的 char str[n] 几乎一样。"

    。数组和指针是两个不同的概念。两者都不一样。

    【讨论】:

    • 作为函数参数声明,char *strchar[n]相同的;他们都将str 声明为指针。 (这应用于参数。)
    【解决方案2】:

    ArrayPointer 是两个不同的概念。我想你应该从基础慢慢开始,这是一篇解释:http://www.cs.bu.edu/teaching/cpp/string/array-vs-ptr/

    【讨论】:

    • 字符串和数组的概念在cpp和c中是一样的吗?无论如何感谢您的链接
    • 在 C++ 中,你有std::string,这是一个处理字符串的类。但是,您仍然可以使用 C 风格的字符串。在 C 中,string 是一个概念而不是类型,是一个以 \0 (NULL) 字符结尾的字符数组。这就是区别!
    • @xjaphx: NULL 是一个空 指针 常量,而不是空字符。
    • @Keith Thompson:好的,NUL 然后:|
    【解决方案3】:

    我见过的关于 C(和 C++)中数组和指针之间关系的最佳解释是 comp.lang.c FAQ 的第 6 节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 2015-01-21
      相关资源
      最近更新 更多