究竟是什么char*
?它是指针吗?我认为指针在标识符之前有星号,而不是类型(不一定是同一个东西)......?
答案 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;
都是一样的。