『壹』 c語言中sizeof和strlen函數區別在哪

1、用法不一樣

sizeof可以用類型做參數。

strlen只能用char*做參數,且必須是以''''結尾的。sizeof還可以版用函數做參數,比權如:

short f();

printf("%d ", sizeof(f()));

輸出的結果是sizeof(short),即2。

2、功能不一樣

sizeof的功能能是,獲得保證,能容納實現所建立的最大對象的位元組大小。

strlen的功能是返回字元串的長度,該字元串可能是自己定義的,也可能是內存中隨機的,該函數實際完成的功能是從代表該字元串的第一個地址開始遍歷,直到遇到結束符NULL。返回的長度大小不包括NULL。

3、意思不一樣

sizeof(...)是運算符,在頭文件中typedef為unsigned int,其值在編譯時即計算好了,參數可以是數組、指針、類型、對象、函數等。

strlen(...)是函數,要在運行時才能計算。參數必須是字元型指針(char*)。當數組名作為參數傳入時,實際上數組就退化成指針了。

『貳』 c語言程序里sizeof是什麼意思

在 Pascal 語言中,sizeof() 是一種內存容量度量函數,功能是返回一個變數或者類型的大小(以位元組為單位);在 C 語言中,sizeof() 是一個判斷數據類型或者表達式長度的運算符。

在Pascal 語言與C語言中,對 sizeof() 的處理都是在編譯階段進行。

(2)c語言sizeof與擴展閱讀

需要注意的是,結構體的 sizeof,由於位元組對齊的原因,結構體所佔的空間,並不是其所有成員所佔空間的累加和。

sizeof 對一個表達式求值,編譯器根據表達式的最終結果類型來確定大小,一般不會對表達式進行計算。所以

sizeof(1+2)等價於sizeof(int);

sizeof(1+2.5)等價於sizeof(double)。

『叄』 C語言中sizeof是什麼意思

sizeof是C語言中保留關鍵字,也可以認為是一種運算符,單目運算符。常見的使用方式:


int a=10;

int arr=[1,2,3];

char str[]="hello";

int len_a = sizeof(a);

int len_arr = sizeof(arr);

int len_str = sizeof(str)

printf("len_a=%d,len_arr=%d,len_str=%d ",len_a,len_arr,len_str)

結果是:len_a=4,len_arr=12,len_str=6

(3)c語言sizeof與擴展閱讀:

在 Pascal 語言中,sizeof() 是一種內存容量度量函數,功能是返回一個變數或者類型的大小(以位元組為單位)。

在 C 語言中,sizeof() 是一個判斷數據類型或者表達式長度的運算符。

在Pascal 語言與C語言中,對 sizeof() 的處理都是在編譯階段進行。

sizeof是C/C++中的一個操作符(operator),簡單的說其作用就是返回一個對象或者類型所佔的內存位元組數。

MSDN上的解釋為:

The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t.



網路-sizeof

『肆』 c語言strlen與sizeof的區別詳解。。。。

首先strlen是字元串處理函數,用於字元串的.算字元個數的.比如"good",用strlen處理那就是4,不包含結尾0。
而sizeof是算佔用空間的..比如char a[100]="good",那麼sizeof之後就是100,因為一個字元佔用1個位元組,那100個字元不管是不是0那就是100,如果是int a[100]那就是400。

『伍』 C語言中sizeof與strlen的區別是什麼

區別如下:來

1、指代上的區別自

(1)sizeof:用來獲取字元串長度的導引,是處理字元串的重要工具。

(2)strlen:做的是一個計數器。

2、用法上的區別

(1)sizeof:sizeof( type_name ); // sizeof(type); 在編譯時有效,而不是在運行時有效。

(2)strlen:externunsignedintstrlen(char*s); 返回s的長度,不包含終止符NULL。

3、規則上的區別

(1)sizeof:可用於任何變數名,類型名或常量值。 當用於變數名(不是數組名)或常量時,不需要括弧。

(2)strlen:從內存的某個特定位置開始掃描(可以是字元串的開頭,中間的某個位置,甚至是不確定的存儲區域),直到第一個字元串結束字元' 0'為止 ,然後返回計數器值。

『陸』 c語言中SIZEOF啥意義

sizeof
用來求一個變數或者一種類型所佔用的位元組數。比如sizeof(int)一般是4,sizeof(char)一般是1.如果定義了一個整型數,int
a,sizeof(a)就是sizeof(int),也就是4.
不過,sizeof的語義遠不止這些,更詳細的用法可以參閱c++文檔

『柒』 c語言關於sizeof和strlen

strlen(char*)函數求的是字元串的實際長度,它求得方法是從開始到遇到第一個'\0',如果你只定義沒有給它賦初值,這個結果是不定的,它會從aa首地址一直找下去,直到遇到'\0'停止。
char aa[10];cout<<strlen(aa)<<endl; //結果是不定的
char aa[10]={'\0'}; cout<<strlen(aa)<<endl; //結果為0
char aa[10]="jun"; cout<<strlen(aa)<<endl; //結果為3
而sizeof()函數返回的是變數聲明後所佔的內存數,不是實際長度。
sizeof(aa) 返回10
int a[10]; sizeof(a) 返回40
1.sizeof操作符的結果類型是size_t,它在頭文件中typedef為unsignedint類型。
該類型保證能容納實現所建立的最大對象的位元組大小。
2.sizeof是算符,strlen是函數。
3.sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以''\0''結尾的。
sizeof還可以用函數做參數,比如:
short f();
printf("%d\n", sizeof(f()));
輸出的結果是sizeof(short),即2。
4.數組做sizeof的參數不退化,傳遞給strlen就退化為指針了。
5.大部分編譯程序 在編譯的時候就把sizeof計算過了是類型或是變數的長度這就是sizeof(x)可以用來定義數組維數的原因
char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;
6.strlen的結果要在運行的時候才能計算出來,是用來計算字元串的長度,不是類型占內存的大小。
7.sizeof後如果是類型必須加括弧,如果是變數名可以不加括弧。這是因為sizeof是個操作符不是個函數。
8.當適用於一個結構類型時或變數, sizeof 返回實際的大小,當適用於靜態的空間數組, sizeof 歸還全部數組的尺寸。
sizeof 操作符不能返回被動態分派的數組或外部數組的尺寸
9.數組作為參數傳給函數時傳的是指針而不是數組,傳遞的是數組的首地址,

『捌』 C語言中sizeof的用法

sizeof(a)
說的是結構體的大小2+1+2=5
sizeof(b)是指針b的大小,它在不同位的機器上占的位元組數不同,在你的機器上可能是2了
指針不因為類型的不同而使占的自己數變化
它就是一個整型占的位元組數
char *p;
int *q;
printf("%d\n",sizeof(p));
printf("%d\n",sizeof(q));
結果都是2,不信自己試試

『玖』 C語言中,sizeof運算符有什麼作用

sizeof運算符

該運算符在編譯階段就已經起作用了。它以位元組為單位返回其操作數的大小。它的操作數可以是數據對象也可以是一個類型。如果是類型那麼操作數需要用圓括弧括起來。

如:sizeof(int)=4;

(9)c語言sizeof與擴展閱讀:

C語言其他運算符:

1、取模運算符%

該運算符有個特性就是只支持整數運算。它的作用就是用左邊的操作數除以右邊的操作數得到的余數。它對浮點數其他類型不起作用。

如:11%2=1因為11除以2得5餘1

2、自增自減運算符++/--

這種運算符的基本作用就是讓其操作數增加1或者減去1。這種運算符有兩種模式:前綴模式和後綴模式。

前綴模式:運算符放在操作數的前面,在表達式中求值時先將操作數進行加1或者減1操作然後再參與運算。

後綴模式:運算符放在操作數的後面,在表達式中求值時先將操作數參與運算然後再對操作數進行加1或者減1操作。

3、三目運算符?:

顧名思義就是三個操作數的運算符,它的用法時當問號前面的表達式的值為真時,取值為冒號前面的數值,否則取值為冒號後面的數值。由於它的執行效率較高,常被我們用來代替條件語句。

如:x>1?2:3;這句話的意思就是當x的值大於1時,整個表達式的值為2,否則為3。

『拾』 c語言中sizeof()和strlen()用法上有什麼區別呢

兩者都是返回位元組數,
具體講前者返回的是位元組數,而後者返回的是字元數;
其次,sizeof返回的數量包括最後的結束符'\0',而strlen則沒有。