详解sizeof与strlen
一,sizeof是C语言的一种单目运算符,与C语言的其他运算符++,--一样,它并不是函数;sizeof()以字节为单位给出了操作数的大小;sizeof的值是无符号int。
strlen是一个函数,只处理字符数组,遍历字符数组中每个元素,当遇到'\0'时停止遍历,返回字符数组中字符的个数,sizeof的值是无符号int。
二,sizeof
1,sizeof用于数组,返回编译时分配的数组空间大小,如果字符数组,注意有'\0':int num[4]; sizeof(num) 返回16、char str[] = "hello";sizeof(str)返回6。
2,sizeof用于指针,返回存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4):char *p = "weqwe";sizeof(p)返回4。
3,sizeof用于类型,返回该类型所占的空间大小。
| 数据类型 | 所占字节数 |
| char | 1字节 |
| short (short int) | 2字节 |
| int | 4字节 |
| long (long int) | 4字节 |
| float | 4字节 |
| double | 8字节 |
| long long(long long int) | 8字节 |
| long double | 10字节 |
4,sizeof用于对象,返回对象的实际占用空间大小。
5,sizeof用于函数,函数的返回类型所占的空间大小。函数的返回类型不能是void。
三,sizeof的常量性
sizeof的计算发生在编译时刻,所以sizeof被当作常量表达式用。
详解sizeof与strlen的更多相关文章
- C-基础:详解sizeof和strlen,以及strstr
sizeof和strlen (string.h) 先看几个例子(sizeof和strlen之间的区别): (1) 对于一个指针, char* ss ="0123456789"; ...
- c语言详解sizeof
一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等. 它并不是函数. sizeof操作符以字节形式给出了其操作数的存储大小. 操 ...
- c strlen和sizeof详解
用双引号定义并且声明的时候明确指定数组大小的话,sizeof就会返回指定的大小,不会自动加1: char str2[10] = "hello c"; printf("st ...
- 【转载】sizeof()、strlen()、length()、size()详解和区别
c/c++中获取字符串长度.有以下函数:size().sizeof() .strlen().str.length();一.数组或字符串的长度:sizeof().strlen()1.sizeof():返 ...
- (转载) Linux IO模式及 select、poll、epoll详解
注:本文是对众多博客的学习和总结,可能存在理解错误.请带着怀疑的眼光,同时如果有错误希望能指出. 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案 ...
- Linux C 字符串函数 sprintf()、snprintf() 详解
一.sprintf() 函数详解 在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前 ...
- trie字典树详解及应用
原文链接 http://www.cnblogs.com/freewater/archive/2012/09/11/2680480.html Trie树详解及其应用 一.知识简介 ...
- memset函数详解
语言中memset函数详解(2011-11-16 21:11:02)转载▼标签: 杂谈 分类: 工具相关 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大 ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
随机推荐
- k8s问题记录
1. kubectl run 起来的pod 用 kubectl delete po删不掉 kubectl delete deployment my-nginx kubelet# 看到最后一行:erro ...
- 给mysql数据添加一个只拥有一张表的权限
grant all privileges on [database].* to 'database'@'localhost' identified by 'password' 例如: grant al ...
- Kubernetes集群向指定节点上创建容器
如果需要限制Pod到指定的Node上运行,则可以给Node打标签并给Pod配置NodeSelector. 给节点添加标签 首先查看节点信息 [root@k8s-master ~]# kubectl g ...
- 25- 解决'python -m pip install --upgrade pip' 报错问题
转载于:https://blog.csdn.net/cxs123678/article/details/80659273 再安装包的时候提示 You are using pip version 9.0 ...
- [Laravel] mac下通过 homestead 搭建环境 到运行项目
seven_Android 关注 2017.07.03 21:33* 字数 2240 阅读 3464评论 10喜欢 9 之前学习过一段时间的 Laravel ,换 mac 后一直没空做相关的事情,而且 ...
- Java程序设计——对象序列化
对象序列化的目标是将对象保存到磁盘中或允许在网络中直接传输对象,对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上,通过网络将这种二进制流传输到另 ...
- tomcat启动了server.xml中没有配置的项目
在tomcat的conf目录下的server.xml文件中没有配置hczm_struts项目,但在eclipse启动tomcat调试时,一直启动hczm_struts项目. 经检查,发现conf\Ca ...
- __lll_mutex_lock_wait的错误原因
1. x86_64栈(glib 2.4): free时: (gdb) bt #0 0x00002b9405ea1c38 in __lll_mutex_lock_wait () from /lib64 ...
- Linux 基础教程 31-tcpdump命令-3
经过前面的学习,tcpdump的用法相信应该都掌握了,今天我们来学习对tcpdump输出内容的学习和了解.我们以第一个示例进行讲解如下所示: IP协议包分析 [root@localhost ~ ...
- c++ vector反转reverse
template <class BidirectionalIterator> void reverse ( BidirectionalIterator first, Bidirection ...