打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
搞清楚sizeof,strlen吧

不要再小看这些东西了,你认为你真的很清楚那就算了,不过不要等你笔试时几个这样的小题目让你想半天,表达式一混杂,一多,你就昏头了.不行的,不行的,还是看看吧...

sizeof相当于是个宏一样的东西,因为它只是一个运算符,而不是函数,编译时展开为常数,编译的时候有每个变量的定义表,sizeof 通过查表确定变量占用的空间,这是分配内存给process之前要确定的.其实可以简单的理解sizeof是征对"类型"的,而非"变量",但此时不能这样看如:sizeof("HELLO");中括号中为const char *,而是一个"字符串",所以结果大小为5.但:
        char *ps = "HELLO";
        sizeof(ps) = 4 //只是指针的大小
        char as[8];
        sizeof(as) = 8  //因为as的类型为char [8],这个大小的确是8
        char aa[8][9];
        sizeof((char*)aa) = 4  //还是char *
        char arr[100] = "HELLO";
        sizeof(arr) = 100 //和赋什么值没什么关系,关键是"类型"是什么

int func(char p[100])
{
    sizeof(p) = 4; 

/*C/C++中不能传数组,只能传指针,所以任何数组都会隐式转成指针形式进行操作,所以"类型"还是指针而矣.那形参中的大小100有没有用呢?没有.如果有的话,那很多时候还需要加个数组的维数参数干什么呢,是吧. */
}

strlen就简单些了,但要搞清楚它的本质,它是一个函数,参数是const char*,搞清楚它的实现,就是碰到‘\0‘(字符串结尾,就停止计数,但不包括‘\0‘.所以它不是看类型而是看变量,看变量赋的什么值.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C语言中sizeof与strlen区别
带你了解c++和c中字符串的使用
char字符串数组与string之间的转换,以及sizeof,strlen,length的区别
Sizeof与Strlen的区别与联系
预处理、const、static与sizeof
sizeof与strlen
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服