c语言sizeof和strlen哪个大,C语言的sizeof和strlen区别与联系
sizeof指的是占有空間的大小,包括字符串結束的\0。strlen是計算字符串長度,以\0作為結束標志,并且\0不計入數(shù)值。
#include
#include
using namespace std;
void fun(char a[100]){
cout << sizeof(a) << endl;
// 參數(shù)里的數(shù)組也是按指針傳值的。所以復制的是一個指針, 輸出4
cout << strlen(a) << endl;
// 5
}
int main()
{
char *p1 = "Hello world!";
char p2[] = "Hello world!";
char p3[] = {'H','e','l','l','o',' ','w','o','r','l','d','!'};
char p4[] = {'H','e','l','l','o','\0','w','o','r','l','d','!'};
char p5[100] = {'H','e','l','l','o','\0','w','o','r','l','d','!'};
char *p6 = "Hello world!";
cout << int(p1) << "\t" << int(p6) << endl;
// 兩個值相同,所以p1和p6兩個指針指向同一塊靜態(tài)存儲區(qū)。
//p1[2]='T'; 報錯!內(nèi)存錯誤,靜態(tài)存儲區(qū)內(nèi)只能存儲常量。
cout << sizeof(p1) << endl;
// 字符串存儲在靜態(tài)存儲區(qū),而棧中存放的是一個指針,在32位機上,輸出4
cout << sizeof(p2) << endl;
// p2數(shù)組全部存放在棧空間上,包括\0共占用13個字節(jié)的空間,輸出13
cout << sizeof(p3) << endl;
// p3是一個字符數(shù)組,共含有12個元素,所以輸出12
cout << sizeof(p4) << endl;
// p4是一個字符數(shù)組,共含有12個元素,所以輸出12
cout << sizeof(p5) << endl;
// 棧中開辟了100字節(jié)大小的內(nèi)存,所以輸出100
cout << sizeof(short) << endl;
// short = 2字節(jié)
cout << sizeof(int) << endl;
// int = 4字節(jié)
cout << sizeof(long) << endl;
// long=4字節(jié)
cout << sizeof(long long) << endl;
// 8
cout << sizeof(__int64) << endl;
//8
cout << sizeof(float) << endl;
// 4
cout << sizeof(double) << endl;
// 8
cout << strlen(p1) << endl;
// 靜態(tài)存儲區(qū)內(nèi),在!后含有了\0所以輸出12
cout << strlen(p2) << endl;
// 12
cout << strlen(p3) << endl;
// 不含有\(zhòng)0 所以這種輸出方式 disaster 災難!!輸出結果不確定,這里是28
cout << strlen(p4) << endl;
// \0之前含有Hello所以長度為5
cout << strlen(p5) << endl;
// 5
fun(p5);
system("pause");
return 0;
}
總結
以上是生活随笔為你收集整理的c语言sizeof和strlen哪个大,C语言的sizeof和strlen区别与联系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众平台怎么制作一个发红包的活动
- 下一篇: 在分期乐软件中如何开通乐花卡