C语言sizeof 和 strlen 的区别

来源:互联网 发布:组态王是什么软件 编辑:程序博客网 时间:2024/04/19 13:04
#include <iostream>using namespace std;class X {int i;int j;char c;};int main(){char *ss = "0123456789";cout << sizeof(ss)<<endl;//结果是4,ss是指向字符串常量的一个字符指针cout << sizeof(*ss)<<endl;//结果是1,*ss是第一个字符char ss[] = "0123456789";cout<<sizeof(ss)<<endl;//结果是11,ss是数组,计算到“\0”位置,因此是10 + 1 cout<<sizeof(*ss)<<endl;//结果是1,*ss是第一个字符char ss[100] = "0123456789";cout<<sizeof(ss)<<endl;//结果是100,ss表示在内存中预分配的大小为100乘以1 cout<<strlen(ss)<<endl;//结果是10,strlen是一个函数,其内部实现是用一个循环计算到“\0”位置之前int ss[100] = "0123456789";//错误cout<<sizeof(ss)<<endl;//错误cout<<strlen(ss)<<endl;//错误X x;cout<<sizeof(X)<<endl;//结果是12,内存对齐cout<<sizeof(x)<<endl;//同上。return 0;}