什么是`char *`?

时间:2010-11-27 20:13:54

标签: c++ pointers types

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

4 个答案:

答案 0 :(得分:19)

它是指向char的指针。

在声明指针时,星号位于类型之后和标识符之前,空格无关紧要。这些都声明char指针:

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

为了让事情更加混乱,在一次声明多个变量时,星号仅适用于单个标识符(在其右侧)。 E.g:

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

主要是因为这个原因,星号通常紧邻标识符放置,而不是类型,因为它避免了这种令人困惑的声明。

答案 1 :(得分:15)

它是一个指向角色的指针。你可以写

char* bla;

char *bla;

它是一样的。

现在,在C中,一个指向char的指针用于字符串:字符串的第一个字符是指针指向的位置,下一个地址中的下一个字符,等等,直到Null-已到达终端符号\0

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

答案 2 :(得分:1)

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

在处理指针时,*字符显示在两个不同的位置。首先,类型“指向T的指针”由T*表示(将*附加到类型名称)。第二,取消引用指针时,通过将*添加到要取消引用的指针变量的名称来完成。

答案 3 :(得分:1)

空白通常不重要,所以

char* suchandsuch;

char *suchandsuch;

char
*
suchandsuch;

都是一样的。