Что такое "char *"? - PullRequest
       9

Что такое "char *"?

6 голосов
/ 27 ноября 2010

Что такое char*, точно?Это указатель?Я думал, что указатели имеют звездочку перед идентификатором, а не тип (что не обязательно одно и то же) ...?

Ответы [ 4 ]

19 голосов
/ 27 ноября 2010

Это указатель на char.

При объявлении указателя звездочка идет после типа и перед идентификатором, при этом пробел не имеет значения.Все они объявляют 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

Именно по этой причине звездочка обычно размещается непосредственно рядом с идентификатором, а не с типом, поскольку это позволяет избежать этого запутанного объявления.

15 голосов
/ 27 ноября 2010

Это указатель на символ. Вы можете написать либо

char* bla;

или

char *bla;

То же самое.

Теперь, в C, указатель на символ использовался для строк: первый символ строки будет таким, на который указывает указатель, следующим символом в адресе, который будет следующим, и т. Д., И т. Д. Терминал-символ \0 был достигнут.

НО: больше нет необходимости делать это в C ++. Вместо этого используйте std :: string (или похожие классы). Тип char * был назван самым частым источником ошибок безопасности!

1 голос
/ 28 ноября 2010

Пробелы обычно не имеют значения, поэтому

char* suchandsuch;

char *suchandsuch;

char
*
suchandsuch;

все одинаковые.

1 голос
/ 27 ноября 2010

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

Символ * появляется в двух разных местах при работе с указателями. Во-первых, тип «указатель на T» обозначается T* (добавление * к имени типа). Во-вторых, при разыменовании указателя, что делается путем добавления * к имени переменной указателя, которую вы хотите разыменовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...