c中sizeof的用法
c中sizeof的用法你知道嗎?下面小編就跟你們詳細介紹下c中sizeof的用法,希望對你們有用。
c中sizeof的用法如下:
學(xué)習(xí)C/C++有時會遇到下面的情況:
已知 char *str1="absde";
char str2[]="absde";
char str3[8]={'a',};
char str4 [] = "0123456789";
為什么sizeof(str1)=4
sizeof(str2)=6;
sizeof(str3)=8;
sizeof(str4)=11;呢? 丈二和尚摸不著頭腦,接下來我們一起好好討論討論,sizeof()到底是怎么一回事。
首先咱們說明一點,char類型變量在內(nèi)存中占一個字節(jié),所以sizeof(char)是1,這點咱們學(xué)C/C++的應(yīng)該很好理解。
str1是一個指針變量,它只是指向了字符串"absde"而已。sizeof(str1)既不是字符串占的空間長度,也不是字符數(shù)組占的空間長度,而是一個字符型指針占的空間,所以sizeof(str1)=sizeof(char*)=4(因為在C/C++中一個指針占4個字節(jié))。
str2是一個字符型數(shù)組。C/C++規(guī)定,對于一個數(shù)組,返回這個數(shù)組占的總空間,所以sizeof(str2)取得的是字符串"absde"占的總空間。"absde"中,共有a b s d e
c中sizeof的用法
c中sizeof的用法你知道嗎?下面小編就跟你們詳細介紹下c中sizeof的用法,希望對你們有用。
c中sizeof的用法如下:
學(xué)習(xí)C/C++有時會遇到下面的情況:
已知 char *str1="absde";
char str2[]="absde";
char str3[8]={'a',};
char str4 [] = "0123456789";
為什么sizeof(str1)=4
sizeof(str2)=6;
sizeof(str3)=8;
sizeof(str4)=11;呢? 丈二和尚摸不著頭腦,接下來我們一起好好討論討論,sizeof()到底是怎么一回事。
首先咱們說明一點,char類型變量在內(nèi)存中占一個字節(jié),所以sizeof(char)是1,這點咱們學(xué)C/C++的應(yīng)該很好理解。
str1是一個指針變量,它只是指向了字符串"absde"而已。sizeof(str1)既不是字符串占的空間長度,也不是字符數(shù)組占的空間長度,而是一個字符型指針占的空間,所以sizeof(str1)=sizeof(char*)=4(因為在C/C++中一個指針占4個字節(jié))。
str2是一個字符型數(shù)組。C/C++規(guī)定,對于一個數(shù)組,返回這個數(shù)組占的總空間,所以sizeof(str2)取得的是字符串"absde"占的總空間。"absde"中,共有a b s d e \0六個字符,所以str2數(shù)組的長度是6,所以sizeof(str2)=6*sizeof(char)=6。
str3已經(jīng)定義成了長度是8的數(shù)組,所以sizeof(str3)為8。
str4和str2類似,'0' '1' ... '9'加上'\0'共11個字符,所以str4占的空間是11。
總之,對于指針,sizeof操作符返回這個指針占的空間,一般是4個字節(jié);而對于一個數(shù)組,sizeof返回這個數(shù)組所有元素占的總空間。char*與char[]容易混淆,我們一定要分清,而且char*="aaa"的寫法現(xiàn)在不被提倡,應(yīng)予以避免。
而strlen不區(qū)分是數(shù)組還是指針,就讀到\0為止返回長度。而且strlen是不把\0計入字符串的長度的。
str3已經(jīng)定義成了長度是8的數(shù)組,所以sizeof(str3)為8。
str4和str2類似,'0' '1' ... '9'加上'
c中sizeof的用法
c中sizeof的用法你知道嗎?下面小編就跟你們詳細介紹下c中sizeof的用法,希望對你們有用。
c中sizeof的用法如下:
學(xué)習(xí)C/C++有時會遇到下面的情況:
已知 char *str1="absde";
char str2[]="absde";
char str3[8]={'a',};
char str4 [] = "0123456789";
為什么sizeof(str1)=4
sizeof(str2)=6;
sizeof(str3)=8;
sizeof(str4)=11;呢? 丈二和尚摸不著頭腦,接下來我們一起好好討論討論,sizeof()到底是怎么一回事。
首先咱們說明一點,char類型變量在內(nèi)存中占一個字節(jié),所以sizeof(char)是1,這點咱們學(xué)C/C++的應(yīng)該很好理解。
str1是一個指針變量,它只是指向了字符串"absde"而已。sizeof(str1)既不是字符串占的空間長度,也不是字符數(shù)組占的空間長度,而是一個字符型指針占的空間,所以sizeof(str1)=sizeof(char*)=4(因為在C/C++中一個指針占4個字節(jié))。
str2是一個字符型數(shù)組。C/C++規(guī)定,對于一個數(shù)組,返回這個數(shù)組占的總空間,所以sizeof(str2)取得的是字符串"absde"占的總空間。"absde"中,共有a b s d e \0六個字符,所以str2數(shù)組的長度是6,所以sizeof(str2)=6*sizeof(char)=6。
str3已經(jīng)定義成了長度是8的數(shù)組,所以sizeof(str3)為8。
str4和str2類似,'0' '1' ... '9'加上'\0'共11個字符,所以str4占的空間是11。
總之,對于指針,sizeof操作符返回這個指針占的空間,一般是4個字節(jié);而對于一個數(shù)組,sizeof返回這個數(shù)組所有元素占的總空間。char*與char[]容易混淆,我們一定要分清,而且char*="aaa"的寫法現(xiàn)在不被提倡,應(yīng)予以避免。
而strlen不區(qū)分是數(shù)組還是指針,就讀到\0為止返回長度。而且strlen是不把\0計入字符串的長度的。
總之,對于指針,sizeof操作符返回這個指針占的空間,一般是4個字節(jié);而對于一個數(shù)組,sizeof返回這個數(shù)組所有元素占的總空間。char*與char[]容易混淆,我們一定要分清,而且char*="aaa"的寫法現(xiàn)在不被提倡,應(yīng)予以避免。
而strlen不區(qū)分是數(shù)組還是指針,就讀到
c中sizeof的用法
c中sizeof的用法你知道嗎?下面小編就跟你們詳細介紹下c中sizeof的用法,希望對你們有用。
c中sizeof的用法如下:
學(xué)習(xí)C/C++有時會遇到下面的情況:
已知 char *str1="absde";
char str2[]="absde";
char str3[8]={'a',};
char str4 [] = "0123456789";
為什么sizeof(str1)=4
sizeof(str2)=6;
sizeof(str3)=8;
sizeof(str4)=11;呢? 丈二和尚摸不著頭腦,接下來我們一起好好討論討論,sizeof()到底是怎么一回事。
首先咱們說明一點,char類型變量在內(nèi)存中占一個字節(jié),所以sizeof(char)是1,這點咱們學(xué)C/C++的應(yīng)該很好理解。
str1是一個指針變量,它只是指向了字符串"absde"而已。sizeof(str1)既不是字符串占的空間長度,也不是字符數(shù)組占的空間長度,而是一個字符型指針占的空間,所以sizeof(str1)=sizeof(char*)=4(因為在C/C++中一個指針占4個字節(jié))。
str2是一個字符型數(shù)組。C/C++規(guī)定,對于一個數(shù)組,返回這個數(shù)組占的總空間,所以sizeof(str2)取得的是字符串"absde"占的總空間。"absde"中,共有a b s d e \0六個字符,所以str2數(shù)組的長度是6,所以sizeof(str2)=6*sizeof(char)=6。
str3已經(jīng)定義成了長度是8的數(shù)組,所以sizeof(str3)為8。
str4和str2類似,'0' '1' ... '9'加上'\0'共11個字符,所以str4占的空間是11。
總之,對于指針,sizeof操作符返回這個指針占的空間,一般是4個字節(jié);而對于一個數(shù)組,sizeof返回這個數(shù)組所有元素占的總空間。char*與char[]容易混淆,我們一定要分清,而且char*="aaa"的寫法現(xiàn)在不被提倡,應(yīng)予以避免。
而strlen不區(qū)分是數(shù)組還是指針,就讀到\0為止返回長度。而且strlen是不把\0計入字符串的長度的。
c中sizeof的用法
c中sizeof的用法你知道嗎?下面小編就跟你們詳細介紹下c中sizeof的用法,希望對你們有用。
c中sizeof的用法如下:
學(xué)習(xí)C/C++有時會遇到下面的情況:
已知 char *str1="absde";
char str2[]="absde";
char str3[8]={'a',};
char str4 [] = "0123456789";
為什么sizeof(str1)=4
sizeof(str2)=6;
sizeof(str3)=8;
sizeof(str4)=11;呢? 丈二和尚摸不著頭腦,接下來我們一起好好討論討論,sizeof()到底是怎么一回事。
首先咱們說明一點,char類型變量在內(nèi)存中占一個字節(jié),所以sizeof(char)是1,這點咱們學(xué)C/C++的應(yīng)該很好理解。
str1是一個指針變量,它只是指向了字符串"absde"而已。sizeof(str1)既不是字符串占的空間長度,也不是字符數(shù)組占的空間長度,而是一個字符型指針占的空間,所以sizeof(str1)=sizeof(char*)=4(因為在C/C++中一個指針占4個字節(jié))。
str2是一個字符型數(shù)組。C/C++規(guī)定,對于一個數(shù)組,返回這個數(shù)組占的總空間,所以sizeof(str2)取得的是字符串"absde"占的總空間。"absde"中,共有a b s d e \0六個字符,所以str2數(shù)組的長度是6,所以sizeof(str2)=6*sizeof(char)=6。
str3已經(jīng)定義成了長度是8的數(shù)組,所以sizeof(str3)為8。
str4和str2類似,'0' '1' ... '9'加上'\0'共11個字符,所以str4占的空間是11。
總之,對于指針,sizeof操作符返回這個指針占的空間,一般是4個字節(jié);而對于一個數(shù)組,sizeof返回這個數(shù)組所有元素占的總空間。char*與char[]容易混淆,我們一定要分清,而且char*="aaa"的寫法現(xiàn)在不被提倡,應(yīng)予以避免。
而strlen不區(qū)分是數(shù)組還是指針,就讀到\0為止返回長度。而且strlen是不把\0計入字符串的長度的。