天天看點

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[]
 }
           
sizeof(),wcslen,strlen對于字元數組的使用

是以說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類型。