sizeof(),wcslen,strlen對於字符數組的使用

1.前提

1.1字符的種類

  字符分爲兩種

  • 字符常量char
       - 字符常量      1字節
       -多字符字面量    常見3字節
  • 寬字符wchar_t      windows使用UTF-16編碼 所以是2字節,linux是UTF-32所以是32字節
1.2 常用的名詞
  大小:字節數常用sizeof()
  計數:數組中元素的個數_countof()
  長度:在eof之前的字符數  >=計數的數值


2.sizeof()

用於計算sizeof()內類型的大小可以是數據類型,也可以是函數,但是函數只計算返回值的大小而且不運行。註明:計算字符串數組時候sizeof()函數會加上\0。
char* new_space = (char*)malloc(sizeof(int)+1)



3.strlen()

int main(int argc,char* argv[])
{
   char a[] = "hello";
   unsigned char b[] = "afternoon";
  int b1 = strlen(a);   //b1=6
   int b2 = strlen(b);  //錯誤不可以使用,類型錯誤。 unsigned char b []其實是 const ubsigned char* b[]
 }

在這裏插入圖片描述
所以說strlen()只能處理簡單的char字符數組,當然也不可以直接放入其他類型,如wchar_t 當然還有一點是,strlen是根據null來判斷數組的末尾的,但是wchar_t是可以直接放入null字符的。所以在vs2019中是直接顯示錯誤。

4.wcslen()

這個函數是專門用來計算wchar_t的字節數。返回值爲int

int main(int argc,char* argv[])
{
	char * p = NULL;
	char Int_array[] = {4,5,6,7,8,9};

	wchar_t array[] = L"中";
	p = Int_array;
	int a = _countof(Int_array);   //a=6

	int b = sizeof(array);   // b=4byte
	
	getchar();
	return 1;
}

trick  ctrl + u 轉換爲小寫   
ctrl + shift + u 轉換爲大寫    
ctrl + k 之後加上 ctrl+c添加註釋   
ctrl+k 之後加上 ctrl + u 刪除註釋
tips 提供了標準模板類  bitset<32> a(100)

總的來說要注意數值類型,它具有大小,以及不同的類型編譯器對它的處理也不同,例如接下來一篇文章中的unsigned char類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章