sizeof 與 strlen的區別
1.sizeof
1.1 當使用了一個結果型別或變數時,sizeof 返回實際的大小。當使用一靜態的空間資料時,sizeof返回全部陣列的尺寸。
sizeof操作符不能返回被動態分配的資料或外部的陣列的尺寸
1.2 大部分編譯程式在編譯的時候就把sizeof 計算過了,是型別或則變數的長度,所以sizeof(x)可以定義陣列的維數
char str[20];
int b=sizeof(str);
int a[b];
2.strlen
2.1. strlen的引數只能是 char *,且必須是以’\0‘結尾的
2.2. strlen的結果要在執行的時候才能計算出來,用來計算字串的長度,而不是型別佔記憶體的大小
例子:
char *q3 ="a\n";
sizeof(q3)為4,指標的大小就是一個定值,就是4
strlen(q3) 為2
char ss1[]= "0123"
sizof(ss1) 為5,因為包含‘\0‘
strlen(ss1) 為4
char ss2[]={'6','0','2','3'};
sizof(ss2) 為4
strlen(ss2) 為4
char ss3[100]="0123";
sizeof(ss3) 為100
strlen(ss3) 結果為4,它的內部是一個迴圈計算字串的長度,直到’\0‘為止
int ss4[100];
sizeof(ss4) 為400,因為int佔4個位元組
strlen(ss4) 錯誤,strlen的引數只能是 char *,且必須是以’\0‘ 結尾的
char str[20];
strlen(str) 得到的值錯誤,因為要 strlen 要以’\0‘結尾
char str[2]="23";
strlen(str) 得到的值錯誤,因為要 strlen 要以’\0‘結尾,這裡陣列定義太小了
sizeof 計算棧中分配的大小,其他區域是不會計算在內的
class A
{
public:
int a;
static int b;
}
sizeof(A1) 為4, 因為靜態變數存放在全域性資料區
相關推薦
C語言中sizeof與strlen區別
由於 def sizeof 繼續 數組 color 例如 結束 自動添加 sizeof 初始的分配的空間大小,期中 sizeof(unsigned char) = 1; sizeof(signed char) = 1; sizeof(int) = 4; siz
字串處理中sizeof與strlen區別,以及末尾的\0
char *ch = "wonima aisaoziaaa"; int n = sizeof(ch); // 指標長度,對於64平臺來說,值為8 int nn = sizeof(*ch); // 一個字元的長度,值為1 int nnn = strlen(ch); //
sizeof與strlen區別及用法
1、sizeof的定義--本身是操作符不是函式 1.1、你可以把操作符理解為內建的,最基礎的函式,它們無法完全被若干個未使用同類型操作符的函式所替代。比如加法運算子,你就不可能寫出一個不用+或-的函式來實現任何情況下的加法功能。 1.2、運
sizeof 與 strlen 的區別
由於在專案中,經常需要判別變數、陣列、字串等位元組長度,常常會用到sizeof 和 strlen, 有時候經常會弄混,故整理一下。 1. sizeof : sizeof 運算子 返回一條表示式或一個型別名字所佔的位元組數。與眾不同的一點是,sizeof 並不實際計算其執行物件的值。
Sizeof與Strlen的區別與聯絡
一、sizeof sizeof(...)是運算子,在標頭檔案中typedef為unsigned int,其值在編譯時即計算好了,引數可以是陣列、指標、型別、物件、函式等。 它的功能是:獲得保證能容納實現所建立的最大物件的位元組大小。 由於在編譯時計算,
sizeof與strlen的區別
一、基本定義1、sizeof是C/C++中的一個運算子,其作用是返回一個物件或者型別在記憶體中所佔用的位元組數。 注意:sizeof後面如果是型別則必須加括號,如 sizeof(char);而如果是變數名則可以不加括號,如 sizeof a; 但是建議使用時 均加上括
iOS 筆試題 Sizeof與Strlen的區別與聯絡
一、sizeof sizeof(...)是運算子,在標頭檔案中typedef為unsigned int,其值在編譯時即計算好了,引數可以是陣列、指標、型別、物件、函式等。 它的功能是:獲得保證能容納實現所建立的最大物件的位元組大小。 由於在編譯時計算,因此sizeof不能用來返回動態
sizeof()與strlen()的區別
sizeof()用於檢視變數所佔的空間。例如: sizeof(int) // 4 sizeof(float)// 4 sizeof(double)//8 sizeof(char) //1 char * p = new char[20];sizeof(p)//這裡是p指標所佔的
【PHP】Sizeof與Strlen的區別與聯…
9.陣列作為引數傳給函式時傳的是指標而不是陣列,傳遞的是陣列的首地址, 如: fun(char [8]) fun(char []) 都等價於 fun(char *) 在C++裡引數傳遞陣列永遠都是傳遞指向陣列首元素的指標,編譯器不知道陣列的大小 如果想在函式內知道陣列的大小, 需要這樣做: 進入函式後用me
sizeof詳解,與strlen區別
題綱: 一:定義 二:用法 三:常量性 四:各型別的sizeof 1 基本資料型別的sizeof 2 指標變數sizeof 3 陣列的sizeof 4 結構體的sizeof 5 聯合的sizeof 6 列舉的sizeof 7 類的sizeof 五:與strlen的區別
【linux c】sizeof與strlen的區別簡述_學習筆記_008
通過一個簡單的程式來了解sizeof和strlen的用法,以及和二者的區別。#include <stdio.h> #include <string.h> void size(
sizeof 與 strlen的區別
1.sizeof 1.1 當使用了一個結果型別或變數時,sizeof 返回實際的大小。當使用一靜態的空間資料時,sizeof返回全部陣列的尺寸。 sizeof操作符不能返回被動態分配的資料或外部的陣列的尺寸 1.2 大部分編譯程式在編譯的時候就把sizeof 計算過了,是型
sizeof與strlen的用法與區別
在進入正題之前,我們來先看一段程式碼 #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char a[10]; pri
面試常見題之sizeof與strlen的區別
前段時間一直在忙論文和專利的事情,沒時間去看一些c++/資料結構等筆試面試要用的知識,雖說做科研一直用的是c語言,但是平時用的哪些知識太狹隘了,主要集中在一些聚類演算法上面,並沒有多少時間去探討一些c++/c底層的一些東西,現在馬上要找工作了,著手看了一些東西,現
C語言中sizeof與strlen 的區別
字符指針 系統 32位 大小 添加 std 指針 為什麽 一行 sizeof與strlen是有著本質的區別,sizeof是求數據類型所占的空間大小,而strlen是求字符串的長度,字符串以/0結尾。總的來說sizeof把‘\0‘也給數上了,而strlen遇到‘\0‘就停止計
sizeof與strlen.md
**sizeof與strlen的區別: ** 下面以程式碼的形式來解釋 #include <iostream> using namespace std; int main() { cout << sizeof(int) <<
sizeof與strlen用法詳解(結構體對齊)
#include<stdio.h> int main(int argc,char **argv) { unsigned char a[10] ={1,2,1,2,3,4}; unsigned char a1[10] ={0,0,0,0,0,0}; char *
sizeof和strlen區別以及使用情況分析
實際做開發專案中,如果有涉及到字元資料處理等情況,都會遇到資料長度的獲取。比如現在需要對a[50]陣列進行賦值1~50的指定資料,程式碼如下: char a[50]; for(i = 0 ; i <50 ; i++) { a[i]=i+1; }
sizeof( )與strlen( )測陣列的差異分析
2、對兩個陣列a和b進行如下初始化 char a[]=“ABCDEF”; char b[]={ ‘A’,’B’,’C’,’D’,’E’,’F’}; 陣列長度如何判斷? #include<stdio.h> #include<st
sizeof和strlen()區別及用法
//sizeof是以位元組為單位計算變數或型別所佔記憶體大小,它是屬於C語言運算子系列;而strlen()是一個函式,是計算字串長度(也是以位元組為單位,但略有區別);比如: char array[] = {"ILOVE"}; printf("%d", strlen(array)); //值為5