C語言入門篇--sizeof與strlen基礎(chǔ)理論
1.sizeof
(1)若求字符串占據(jù) 空間 的大小,包括字符串結(jié)尾處默認(rèn)的'\0'。
(2)若所求不是字符串的大小,求的是數(shù)組、類型等的大小,不用考慮'\0',因?yàn)椴皇亲址?,在結(jié)尾處無默認(rèn)的'\0'。
(3)若明顯出現(xiàn)'\0',則統(tǒng)計。
(4)返回一個變量或者類型的大?。ㄒ宰止?jié)為單位)
2.strlen
求字符串內(nèi)容的大小,統(tǒng)計字符串的字符個數(shù),遇到'\0'停止統(tǒng)計,不統(tǒng)計'\0'。
3.知識點(diǎn)
3.1 對于數(shù)組
sizeof:結(jié)果就是數(shù)組大小。
strlen:在計算時會遍歷整個數(shù)組,往后遍歷的時候不一定能碰到'\0',會存在越界問題,
要么程序崩潰要么產(chǎn)生隨機(jī)值,但結(jié)果一定至少是數(shù)組長度。
3.1.1 數(shù)組中無'\0'
#include <stdio.h>
int main()
{
char s[] = { 'a', 'b', 'c' };
printf("%d\n", sizeof(s));
printf("%d\n", strlen(s));//隨機(jī)值
return 0;
}

3.1.2 數(shù)組有'\0'
(1)'\0'在最后
#include <stdio.h>
int main()
{
char s[] = { 'a', 'b', 'c', '\0' };
printf("%d\n", sizeof(s));
printf("%d\n", strlen(s));
return 0;
}

(2) '\0'在中間
#include <stdio.h>
int main()
{
char s[] = { 'a', 'b','\0','c', };
printf("%d\n", sizeof(s));
printf("%d\n", strlen(s));
return 0;
}

3.2 對于字符串
C語言中能夠保存字符串的,只有char類型的數(shù)組。
3.2.1 字符串無明顯的'\0'
#include <stdio.h>
int main()
{
printf("%d\n", sizeof("abcd"));
printf("%d\n", strlen("abcd"));
return 0;
}
、
3.2.2 字符串有明顯的'\0'
(1)'\0'在最后
#include <stdio.h>
int main()
{
printf("%d\n", sizeof("abd\0"));
printf("%d\n", strlen("abd\0"));
return 0;
}

(2)'\0'在中間
#include <stdio.h>
int main()
{
printf("%d\n", sizeof("abc\0d"));
printf("%d\n", strlen("ab\0d"));
return 0;
}

以上就是C語言入門篇--sizeof與strlen基礎(chǔ)理論的詳細(xì)內(nèi)容,更多關(guān)于C語言基礎(chǔ)的資料請關(guān)注腳本之家其它相關(guān)文章!
C語言fgetc和fputc函數(shù)用法詳解(以字符形式讀寫文件)
C語言字符串函數(shù)操作(strlen,strcpy,strcat,strcmp)詳解
c++將引用或者是指針作為函數(shù)參數(shù)實(shí)現(xiàn)實(shí)參的運(yùn)算
C++利用多態(tài)實(shí)現(xiàn)職工管理系統(tǒng)(項目開發(fā))
C++訪問std::variant類型數(shù)據(jù)的幾種方式小結(jié)
C++11中列表初始化機(jī)制的概念與實(shí)例詳解
C++超詳細(xì)講解內(nèi)存空間分配與this指針

