什么是char*
,究竟是什么?它是一个指针吗?我认为指针在标识符之前有星号,而不是类型(不一定是相同的东西)...?什么是char *?
6
A
回答
17
它是指向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
它主要是因为这个原因,星号通常置于紧邻所述标识符和未类型,因为它避免了混淆此声明。
+0
那么,为什么当在一行上声明多个指针时,你必须为每个指针使用一个星号?例如,`char * Pointer1,* Pointer2;`。 – Maxpm 2010-11-27 20:20:15
15
这是一个指向角色的指针。你可以写任何
char* bla;
或
char *bla;
这是一样的。
现在,在C中,指向字符串的指针用于字符串:字符串的第一个字符将是指针指向的位置,接下来出现的地址中的下一个字符等等,直到Null - 终端符号\0
已达到。
但是:没有必要在C++中做到这一点了。改用std :: string(或类似的类)。 char *的东西被命名为最常见的安全漏洞来源!
1
http://cplusplus.com/doc/tutorial/pointers/
的*
字符在两个不同的地方使用指针打交道时显示出来。首先,类型“指向T的指针”由T*
(将*
附加到类型名称)表示。其次,在取消引用指针时,通过将*
加上要取消引用的指针变量的名称来完成。
1
空白不正常关系,所以
char* suchandsuch;
char *suchandsuch;
char
*
suchandsuch;
都是一样的。
相关问题
- 1. 什么是? in?char
- 2. 什么是char * const *?
- 3. 什么(char *)0是什么意思?
- 4. “char(&(...))[2]”是什么意思?
- 5. char []中的“length”是什么?
- 6. char * argv []是什么意思?
- 7. 什么是char * const argv []?
- 8. 'char x []'是什么意思?
- 9. sizeof(char *)是做什么的?
- 10. char&*是什么意思?
- 11. 什么是*((char *)ptr + 4))?
- 12. (char pointer和int added)和循环是什么?什么是c?
- 13. Java为什么char = char^char与char^= char不同?
- 14. (char *)x或(void *)z是什么意思?
- 15. Java中char(0)的含义是什么?
- 16. char * derp [20]是什么意思?
- 17. int argc,char * argv []是什么意思?
- 18. 'char(* p)[5]'是什么意思?'?
- 19. 什么是arduino中的char *声明?
- 20. 什么是SQL Server中的char/varchar?
- 21. 什么是Scala相当于java char []?
- 22. (unsigned char *)&niz [10]是什么意思?
- 23. (const char * restrict,...)是什么意思?
- 24. my_string(char * s)是什么意思?
- 25. 什么是char(* arrs)[rowSize] = malloc(bytesPerTable);
- 26. “const char(&a)[N]”是什么意思?
- 27. 什么是主(ac,av)int ac; char ** av; {...}?
- 28. MySQL将varchar转换为char是什么?
- 29. c中的(char *)0是什么意思?
- 30. CTRL + [char]的键码是什么?
C不关心空格,所以`char * foo;`和'char * foo'是一样的;` – 2010-11-27 20:17:14
@PaulTomblin:C确实在意空间,而不是在那个特殊情况下。 `char苹果;`和`charapple;`是完全不同的。 – 2012-01-17 17:47:48