程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> sizeof 和 strlen語法 用法 例子

sizeof 和 strlen語法 用法 例子

編輯:關於C語言
 

該例子說明幾個問題:

  1. sizeof操作符與strlen函數比較       strlen()計算字符串中字符的個數(arry[] = "hello"),不包括'\0'字符。       sizeof計算數據(包括數組、變量、類型、結構體等)所占內存空間的字節數。   2. 指針與靜態數組的sizeof操作       指針均可看為變量類型的一種。所有指針變量的sizeof 操作結果均為4。         例:int *p; sizeof(p) = 4; 但sizeof(*p)相當於sizeof(int);        對於靜態數組,sizeof可直接計算數組大小;         例:int a[10]; char b[] = "hello";             sizeof(a) = 4 * 10 = 40;             sizeof(b) = 6;       數組做型參時,數組名稱當作指針使用!         例:void  fun(char arry)             sizeof(arry) = 4       3. 格式的寫法       sizeof操作符,對變量或對象可以不加括號,但若是類型,須加括號。推薦都加括號   4. union與struct的空間計算       總體上遵循兩個原則:         (1)整體空間是占用空間最大的成員(的類型)所占字節數的整倍數。         (2)數據對齊原則----內存按結構成員的先後順序排列,當排到該成員變量時,             其前面已擺放的空間大小必須是該成員類型大小的整倍數,如果不夠則             補齊,以此向後類推。       注意:數組按照單個變量一個一個的擺放,而不是看成整體。             如果成員中有自定義的類、結構體,也要注意數組問題。             對齊問題使結構體的sizeof變得比較復雜。
  測試環境vc6.0 ********************************************************************/
#include <stdio.h>#include <string.h>   // 包含strcpy函數
 
 void f(char arry[]){  printf("sizeof(arry) = %d\n",  sizeof(arry));}
 
 
 int main(void){  int *p = NULL;   int a[10] = {0};   char b[] = "hello";
   printf("sizeof(p) = %d\n",  sizeof(p));    // 所有指針變量的sizeof 操作結果均為4。  printf("sizeof(*p) = %d\n",  sizeof(*p));  // 相當於sizeof(int); 
   printf("strlen(b) = %d\n",  strlen(b));  // 計算字符串"hello"長度,不包括'\0'字符。
   f(b);  //  數組做型參時,數組名稱當作指針使用!
   printf("sizeof(a) = %d\n",  sizeof(a));  // 4 * 10 = 40  printf("sizeof(b) = %d\n",  sizeof(b));  // 6 * 1 = 6
   return 0;}
/******************************************************************** sizeof(p) = 4 sizeof(*p) = 4 strlen(b) = 5 sizeof(arry) = 4 sizeof(a) = 40 sizeof(b) = 6 Press any key to continue ********************************************************************/


 

重點例子

#include <stdio.h>
#include <string.h>

void main()
{
unsigned char TxBuffer[] = "\n\rhello world\n\r";
printf("%d\n", sizeof(TxBuffer));
}

輸出結果:16 分析:\n 和 \r 各占一個字節,字符串最後有一個\0,也占一個字節。所以,總共16個字節。  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved