什麼是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