什么是`char*`?

Max*_*xpm 10 c++ types pointers

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

Cam*_*ron 22

它是指向a的指针char.

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

char *pointer1;
char* pointer2;
char * pointer3;
char*pointer4;    // This is illegible, but legal!
Run Code Online (Sandbox Code Playgroud)

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

char* foo, bar;    // foo is a pointer to a char, but bar is just a char
Run Code Online (Sandbox Code Playgroud)

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


Lag*_*aer 15

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

char* bla;
Run Code Online (Sandbox Code Playgroud)

要么

char *bla;
Run Code Online (Sandbox Code Playgroud)

这是相同的.

现在,在C中,指向char的指针用于字符串:字符串的第一个字符是指针指向的位置,下一个地址中的下一个字符,等等,直到Null-Terminal-Symbol \0达成了.

但是:不再需要在C++中执行此操作.请改用std :: string(或类似的类).char*stuff被命名为安全漏洞最常见的一个来源!