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

C說話中的sizeof操作符用法及和strlen的差別

編輯:關於C++

C說話中的sizeof操作符用法及和strlen的差別。本站提示廣大學習愛好者:(C說話中的sizeof操作符用法及和strlen的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話中的sizeof操作符用法及和strlen的差別正文


1、 界說:

  sizeof是C/C++中的一個操作符(operator),簡略的說其感化就是前往一個對象或許類型所占的內存字節數。其前往值類型為size_t,在頭文件stddef.h中界說。在32位體系中:

char的sizeof值為1,char是我們編程能用的最小數據類型。

short的sizeof值為2;
int、float、long為4;
double為8;
一切的指針的sizeof值都為4。

2、語法:

sizeof有三種語法情勢,以下:

1) sizeof( object ); // sizeof( 對象 );
2) sizeof( type_name ); // sizeof( 類型 );
) sizeof object; // sizeof 對象;
 
sizeof( 2 ); // 2的類型為int,所以等價於 sizeof( int );
sizeof( 2 +3.14); // 3.14的類型為double,2也會被晉升成double類型,所以等價於 sizeof( double );
 
3、舉例解釋:

char* ss = "0123456789";
sizeof(ss) 成果 4 ===》ss是指向字符串常量的字符指針
sizeof(*ss) 成果 1 ===》*ss是第一個字符
char ss[] = "0123456789";
sizeof(ss) 成果 11 ===》ss是數組,盤算到\0地位,是以是10+1
sizeof(*ss) 成果 1 ===》*ss是第一個字符
char ss[100] = "0123456789";
sizeof(ss) 成果是100 ===》ss表現在內存中的年夜小 100×1
strlen(ss) 成果是10 ===》strlen是個函數外部完成是用一個輪回盤算到\0為止之前
int ss[100] = "0123456789";
sizeof(ss) 成果 400 ===》ss表現再內存中的年夜小 100×4
strlen(ss) 毛病 ===》strlen的參數只能是char* 且必需是以''\0''開頭的
char q[]="abc";
char p[]="a\n";
sizeof(q),sizeof(p),strlen(q),strlen(p);
成果是 4 3 3 2  

 
4、sizeof與strlen的差別:
 
1.sizeof是算符,strlen是函數。數組作為參數傳給函數時傳的是指針而不是數組,傳遞的是數組的首地址,如: fun(char [8])、fun(char []),都等價於 fun(char *) ,所以數組做sizeof的參數不退步,傳遞給strlen就退步為指針了。

2.sizeof可以用類型做參數,strlen只能用char*做參數,且必需是以''\0''開頭的。sizeof還可以用函數做參數,好比: short f();  printf("%d\n", sizeof(f()));輸入的成果是sizeof(short),即2。
 
3.年夜部門編譯法式 在編譯的時刻就把sizeof盤算過了 是類型或是變量的長度這就是sizeof(x)可以用來界說數組維數的緣由,strlen的成果要在運轉的時刻能力盤算出來,是用來盤算字符串的長度,不是類型占內存的年夜小。

char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;


4.當實用了於一個構造類型時或變量, sizeof 前往現實的年夜小, 當實用一靜態地空間數組, sizeof 清償全體數組的尺寸。 sizeof 操作符不克不及前往靜態地被分配了的數組或內部的數組的尺寸 。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved