代码之家  ›  专栏  ›  技术社区  ›  Maxpm

什么是“char*”?

  •  6
  • Maxpm  · 技术社区  · 15 年前

    什么是 char* ,是吗?是指针吗?我认为指针在标识符之前有星号,而不是类型(这不一定是同一个东西)。。。?

    4 回复  |  直到 8 年前
        1
  •  22
  •   Cameron    15 年前

    它是指向 char .

    当声明指针时,星号在类型之后和标识符之前,空白不重要。这些都表明 烧焦 指针:

    char *pointer1;
    char* pointer2;
    char * pointer3;
    char*pointer4;    // This is illegible, but legal!
    

    更让人困惑的是,当一次声明多个变量时,星号只应用于一个标识符(在它的右边)。例如。:

    char* foo, bar;    // foo is a pointer to a char, but bar is just a char
    

    主要是因为这个原因,星号通常被放置在标识符的旁边,而不是类型,因为它避免了这种混乱的声明。

        2
  •  15
  •   cadolphs    15 年前

    它是一个指向字符的指针。你也可以写

    char* bla;
    

    或

    char *bla;
    

    是一样的。

    现在,在C语言中,字符串使用了一个指向字符的指针:字符串的第一个字符是指针指向的地方,下一个字符是地址中的下一个字符,等等,直到空的终端符号 \0 已经到达。

    但是,在C++中不再需要这样做了。改用std::string(或类似的类)。char*stuff被命名为安全漏洞的最常见来源!

        3
  •  1
  •   suszterpatt    15 年前

    http://cplusplus.com/doc/tutorial/pointers/

    这个 * 字符在处理指针时出现在两个不同的位置。首先,“指向T的指针”类型由 T* (附加 * 到类型名)。第二,当解引用指针时,这是通过在 * 指向要取消引用的指针变量的名称。

        4
  •  1
  •   Pizearke    14 年前

    空白通常不重要,所以

    char* suchandsuch;
    
    char *suchandsuch;
    
    char
    *
    suchandsuch;
    

    都一样。