Что такое char*
, точно? Это указатель? Я думал, что указатели имели звездочку перед идентификатором, а не тип (что не обязательно одно и то же) ...?Что такое `char *`?
ответ
Это указатель на 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
Это в первую очередь по этой причине, что звездочка обычно помещается непосредственно рядом с идентификатором и не типа, поскольку это позволяет избежать этой запутанной декларации.
Почему же при объявлении нескольких указателей на одной строке вам нужно использовать звездочку для каждой из них? Например, `char * Pointer1, * Pointer2;`. – Maxpm 2010-11-27 20:20:15
Это указатель на персонажа. Вы можете написать либо
char* bla;
или
char *bla;
Это то же самое.
Теперь, в C, для строк использовался указатель на символ: первый символ строки будет содержать указатель, следующий символ в следующем адресе и т. Д. И т. Д. До Null -Terminal-Symbol \0
.
НО: Нет необходимости делать это на C++. Вместо этого используйте std :: string (или аналогичные классы). Свойство char * было названо самым частым источником ошибок безопасности!
http://cplusplus.com/doc/tutorial/pointers/
*
характер проявляется в двух различных местах при работе с указателями. Во-первых, тип «указатель на T» обозначается T*
(добавление *
к типу). Во-вторых, при разыменовании указателя, который делается путем добавления *
к имени переменной указателя, которую вы хотите разыменовать.
Пробелы обычно не имеет значения, так
char* suchandsuch;
char *suchandsuch;
char
*
suchandsuch;
все же.
- 1. Что такое char *?
- 2. Что такое знак char?
- 3. Что такое? in? char
- 4. Что такое __ char в массиве char
- 5. Что такое «длина» в char []?
- 6. Что такое ключевое слово 'char'?
- 7. Что такое рациональное использование char * ch vs char * ch
- 8. Что такое char ** argv [] в C++?
- 9. Что такое `* ((char *) ptr + 4))` делать?
- 10. Что такое объявление Delphi для char ***
- 11. Что такое Delphi, эквивалентный «unsigned char» C++?
- 12. Что такое объявление char * в arduino?
- 13. Что такое char * при установке равным ""?
- 14. Что такое индикатор char '?' и после этого в URI?
- 15. Что такое аргумент «char-sequence» для функций генерации NaN?
- 16. Что такое реальное использование устройства/dev/kmem char в linux?
- 17. Что такое «std :: vector <unsigned char> Data = example"?
- 18. Что такое DLL_SYMBOL?
- 19. Что такое логика _PTR_?
- 20. Что такое роль «А»?
- 21. Что такое точка литья?
- 22. Что такое char * argv [] и как он похож на char ** argv
- 23. Что такое String.CopyTo?
- 24. Что такое «Класс :: *»
- 25. Что такое * & параметр
- 26. Что такое ошибка разыменования?
- 27. Что такое реализация objc_selector?
- 28. Что такое постоянные массивы?
- 29. Что такое макросы препроцессора?
- 30. Что такое "?" делать? Что такое __FILE__?
C не интересует пробелы, поэтому `char * foo;` - это то же самое, что и `char * foo;` – 2010-11-27 20:17:14
@PaulTomblin: C не заботится о пространствах, просто не в этом конкретном случае. `char apple;` и `charapple``, совсем разные. – 2012-01-17 17:47:48