我剛剛開始使用C編程。我已經讀了0作爲一個整數常量,指向一個空指針與指針比較,'\ 0'指的是一個空字符,將所有位設置爲0的東西。而在關於我的問題的情況下,我知道我應該使用'\ 0'。但是我可以看到許多使用0的實現。這樣會有什麼不同? 我不想和任何工作一起去。直到我明白爲什麼,我才能繼續前進。 謝謝!使用memset將struct sockaddr_in設置爲0和' 0'會有什麼區別?
回答
沒有區別。他們是平等的。
好的。謝謝。嗯,但是0和'\ 0'本質上不同,對吧?是否有可能簡單解釋爲什麼他們在這裏是平等的? – Manic
他們總是平等的。這只是表示同一事物的另一種方式,因此您可以在字符串文字中使用它,例如:'char c [] =「a \ 0b \ 0c」;'。你可以把它寫成'char c [] = {'a',0,'b',0,'c'}'。它將完全相同。 – bezet
字符'0'是整數48.而字符'\ 0'是整數0。 – Questionable
絕對沒有區別。請使用0
,因爲您將內存置零,並且您不希望在比較char
陣列的任何元素與'\0'
以表示您正在查找空字符時,像您所做的那樣強調內存的任何性質。
更確切地說,' '
是一個給出與指定的字符對應的整數常量的表達式。在這種特殊情況下,的計算結果爲相同的整數 - 0
。所以,沒有區別。
它們是等價的。
int n = 0;
char ch = '\0';
對於指針使用NULL
宏:用字符或字節爲單位打交道時
但它是很常見的整數工作時使用0
,和'\0'
。
memset
具有下列原型:
void * memset (void * ptr, int value, size_t num);
雖然value
具有int
類型,它被解釋爲字節值。所以沒有區別。
char
是一個整數類型,它意味着您可以使用簡單引號如'a'
的字符實際上是整數值。我邀請你去查找ascii
,你會看到字符和整數之間的聯繫。 你可以做一些簡單的測試與printf()
:
printf("%c == %d == %c\n", 'A', 'A', 65);
你會發現角色'\0'
具有整數值0
,所以沒有區別,你可以在你的代碼中使用0
或'\0'
,編譯器這是同一件事。 通常,NULL
是一個用於(void *) 0
的宏,其值爲0
,轉換爲通用指針(它仍然是值0
,但它將被解釋爲指針類型)。
在C中,字符文字如'x'
有int
類型,這意味着'\0'
和0
不僅僅是數值上相等,它們是100%的等效語義。它們是相同整數常量的兩種不同的拼寫。您只能使用檢查令牌拼寫的構造來區分差異,例如預處理器的#
和##
運算符。
(是的,這意味着'\0'
爲空指針常數。)
- 1. -0和0有什麼區別?
- 2. | 0和~~有什麼區別?
- 3. 將對象設置爲.hidden = true和設置.alpha = 0有什麼區別?
- 4. 使用分叉= 0和分叉== 0時有什麼區別?
- 5. .communicate()和.communicate()[0]有什麼區別?
- 6. FILE_ATTRIBUTE_NORMAL和0有什麼區別?
- 7. {0}和+之間有什麼區別?
- 8. 「kill 0」和「kill - - $$」有什麼區別?
- 9. {0}和「」之間有什麼區別?
- 10. firstChild和[0]之間有什麼區別?
- 11. 0(%eax)和(%eax)有什麼區別?
- 12. 將memset向量設置爲0會導致內存泄漏嗎?
- 13. (char)0和'\ 0'之間有什麼區別? in C
- 14. Java中的Runtime.exit(0)和System.exit(0)有什麼區別?
- 15. 之間有什麼區別{0}和{0,數字,整數}
- 16. calloc和malloc跟memset有什麼區別?
- 17. C++中「some」==「some \ 0」和strcmp(「some」,「some \ 0」)有什麼區別?
- 18. 這段代碼中rem == 0和rem = 0有什麼區別?
- 19. C語言中ptr = my_array和ptr =&my_array [0] [0]有什麼區別?
- 20. `[blah addObject:@「1」];``和`[blah insertObject:@「0」atIndex:0]之間有什麼區別;`?
- 21. erlang,'catch 1 = 0'和'(catch 1 = 0)'有什麼區別?
- 22. null,0和nothing什麼區別?
- 23. memset的0和0X00
- 24. i == 0和0 == i有區別嗎?
- 25. 使用.first()和.eq(0)之間有什麼區別?
- 26. setVisibility(View.INVISIBLE)有什麼區別; setVisibility(0);
- 27. Ruby中0..size和0 ... size的區別是什麼?
- 28. struct和dict有什麼區別?
- 29. [0-9] +和[0-9] ++之間的區別是什麼?
- 30. 動態創建對象並將其memset設置爲0
的可能的複製[什麼是EOF的值和在C '\ 0'](https://stackoverflow.com/questions/4705968/ what-is-value-of-eof-and-0-in-c) –