2
A
回答
7
字符串存儲爲字符的動態數組,而char是靜態分配的。
一些字符串的缺點包括:
- 開銷 - 因爲它們是動態的長度必須存儲在除了實際的字符串。
- 子字符串和偏移量運算符不能使用字符串。
- 字符串不能轉換爲可翻譯的文本元素。
因此,要回答你的問題,字符串應該只用於相當長的值與各種長度的地方的額外開銷相對於靜態char(x)
變量的潛在浪費的空間可以忽略不計。
1
我認爲CHAR是最好的,因爲你100%確定該字段只能容納0-12個字符。
+0
這似乎是對我來說正確的答案,不知道你爲什麼得到-1'd。 – tomdemuyt 2013-05-08 23:40:14
1
字符串是可變長度數據類型,而在字符中必須爲類型C(文本字段(字母數字字符))定義長度.. 並且字符串X或十六進制字符串具有初始值(X'0 ... 0 ')。 避免初始值,並且使用實際長度C類型用於
0
字符串變量: 一個字符串是用於存儲數據的任意長度的可變長度的數據類型。使用可變長度字段是因爲它們節省了空間。 字符串,可以存儲任意數量的字符。字符串將在運行時分配內存(也稱爲動態內存分配),將根據字符串的大小分配內存。由於分配的內存是動態的,因此不能使用參數聲明字符串。
但在你的情況下,你已經知道字段的最大長度(0-12個字符),所以CHAR type
是最適合你的情況。 A STRING
類型通常用於可變長度數據或長整型值。
0
字符串是好當:
- 文本長度是可變的。
- 空間是字符串(尾隨在煤焦領域的空間丟失)的一部分
- 你通過他們身邊很多時(STRING變量的元數據小於焦炭場大小)
- 您需要經常得到的字符串的長度。它比CHAR字段更優化。
煤焦領域都不錯:
- 如果他們是小,他們速度快(小於約32個字符Unicode的系統)使用
- CHAR場文字引號('),而不是(` )可以製作成可翻譯的文本。
請注意以下事項:
- 所有變量有元數據,但字符串也有一些內部的字符串指針數據,這可能多達64個字節增加內存消耗。要記住的事情。
- 將文字文本分配給變量時,嘗試將文字類型與變量類型相匹配。 STR用
'test'
,test
用於STRING。這通常稍微快一點。
相關問題
- 1. Windows Char和Char類型和字符串與Console :: WriteLine()
- 2. C++ - 的char *與字符串*
- 3. 定義:AnsiString類型,WideString的,字符串的char [],字符*,BSTR,
- 4. 字符串串連的char *與LPCTSTR
- 5. C++中字符串和char []類型之間的區別
- 6. C++中的類型轉換錯誤從字符串爲char *
- 7. 檢查char *類型的字符串是否包含另一個字符串
- 8. C++:傳遞字符串字面類型爲const char *將字符串參數
- 9. 「無法下標類型的值‘[字符串]’與類型的索引‘字符串’
- 10. 消除字符串中的char字符
- 11. 比較的char *與字符串宏
- 12. 「hello world」字符串文字可以分配給char *類型嗎?
- 13. C是char *模板的一種特殊類型的字符串?
- 14. 的std :: enable_if串/ char類型
- 15. 字段類型字符串與字符串
- 16. 如何在C++中分配類型char(不是字符串)時轉義字符
- 17. 從C char *到python字符串的SWIG類型圖
- 18. 將字符串轉換爲使用Arduino類型的const char *
- 19. 無法隱式轉換爲「的char []」類型「字符串」
- 20. 從類型隱式轉換的char []字符串是不可能
- 21. 在abap中更改類型
- 22. 字符串char - C++
- 23. 字符串類型
- 24. 字符串類型
- 25. 「char」類型的參數與char類型的參數不兼容*
- 26. 不兼容的指針類型字符**與char *錯誤
- 27. 將char與字符串進行比較
- 28. 如何比較字符串與const char *?
- 29. char與字符串不兼容
- 30. 將動態分配的char *字符串複製到新的char *字符串中
1. ABAP存儲每個變量的元數據,而不僅僅是字符串2.子串和偏移量操作符可以用於最新的NetWeaver安裝。 -1對我來說。 – tomdemuyt 2013-05-08 23:39:48
子串&抵消不起作用,雖然 – tomdemuyt 2013-05-14 19:43:56