C语言中关于sizeof 和 strlen的区别分析
1、编译时计算运算符sizeof,可用类型或变量做参数,计算占用内存的大小。sizeof后若是类型必须加括弧,若是变量名可不加括弧。sizeof(x)可用来定义数组维数如:
printf("%d\n", sizeof(short));
输出的结果为短整型的长度2。用结构类型或变量做参数时,sizeof 返回实际的大小,当用于静态数组时,sizeof 返回全部数组的尺寸。sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸
2、运行时计算strlen,只能用char*做参数,且必须是以''\0''结尾的。计算的是字符串的长度。如:
char str[20]="0123456789";
int a=strlen(str); // 结果为a=10
int b=sizeof(str); // 结果b=20;
3、处理静态数组:
char str[20]="0123456789";
int a=strlen(str); // a=10; strlen 计算字符串的长度,以\0'为字符串结束标记。
int b=sizeof(str); // b=20; sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响。
4、处理指针:
char* ss = "0123456789";
sizeof(ss) // 结果4,
ss是指向字符串常量的字符指针,sizeof 获得的是一个指针所占的空间。sizeof(*ss) 结果1,*ss是第一个字符 其实就是获得了字符串的第一位'0' 所占的内存空间,是char类型的,占用1字节。strlen(ss)= 10,若要获得这个字符串的长度,则一定要使用 strlen
以上所述就是关于sizeof 和 strlen区别的全部内容了,希望大家能够喜欢
相关推荐
-
C语言中sizeof()与strlen()函数的使用入门及对比
sizeof()函数 1,是什么? sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换.虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事. 2,有什么用? sizeof其实就是用于告诉我们编译器在为某一特定数据或者某种数据类型的数据在存储空间中开辟空间时,开辟的空间大小,以字节为单位. 3,怎么用? sizeof(类型),或者sizeof(变量)都可以,得到的就是类型或者变量的存储空间.当对变量用的时
-
C++无法重载点符号、::、sizeof等的原因
大多数的运算符能够被程序员重载.例外的是: . (点符号) :: ?: sizeof 并没有什么根本的原因要禁止重载?:.仅仅是因为,我没有发现有哪种特殊的情况需要重载一个三元运算符.注意一个重载了 表达式1?表达式2:表达式3 的函数,不能够保证表达式2:表达式3 中只有一个会被执行. Sizeof 不能够被重载是因为内建的操作(built-in operations),诸如对一个指向数组的指针进行增量操作,必须依靠它.考虑一下: X a[10]; X* p = &a[3]; X* q
-
C#中sizeof的用法实例分析
sizeof是C#中非常重要的方法,本文就以实例形式分析C#中sizeof的用法.分享给大家供大家参考.具体分析如下: 在C#中,sizeof用来计算类型的大小,单位是字节.有这样的一个类: public class MyUglyClass { public char myChar1; public int myInt; public char myChar2; } 在客户端,试图使用sizeof计算该类型的大小. class Program { static void Main(string[
-
解析一个有关sizeof用法的题目--sizeof(i++)
复制代码 代码如下: #include <stdio.h> int main() { int i; i = 10; printf("%d\n", i); printf("%d\n", sizeof(i++)); printf("%d\n", i); return 0; } 这三行输出应该是什么?答案是:10410第三个为什么不是11? i为什么没有自增?请看C++标准;5.3.3 sizeofThe sizeof o
-
sizeof()的简单介绍
(一)基本概念 sizeof操作符以字节形式给出了其操作数的存储大小.操作数可以是一个表达式或括在括号内的类型名.操作数的存储大小由操作数的类型决定. (二)使用方法 1.用于数据类型 sizeof使用形式:sizeof(type) ,如sizeof(int) 2.用于变量 sizeof使用形式:sizeof(var_name)或sizeof var_name 变量名可以不用括号括住.如sizeof (var_name),sizeof var_name等都是正确形式.带括号的用法更普遍,大多数程
-
浅析C语言中的sizeof
这是一个依赖于编译系统的值,一般定义为typedef unsigned int size_t;编译器林林总总,但作为一个规范,都会保证char.signedchar和unsigned char的sizeof值为1,毕竟char是编程能用的最小数据类型.MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with avariable or atype (including aggregate
-
深入sizeof的使用详解
经常在C下编程,不了解精通sizeof就有点说不过去了,本文可没有sizeof与strlen的区别哦,尽管这个对比很经典,不过,将就点吧. 一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等.它并不是函数.sizeof操作符以字节形式给出了其操作数的存储大小. 操作数可以是一个表达式或括在括号内的类型名.操作数的存储大小由操作数的类型决定. 二.sizeof的使用方法1.用于数据类型 sizeof使用形式:sizeof(type) 数据类型必须用
-
php检测数组长度函数sizeof与count用法
本文实例讲述了php检测数组长度函数sizeof与count用法.分享给大家供大家参考.具体如下: 在php检测数组长度的函数有sizeof count 下面看个简单实例: 复制代码 代码如下: $colorlist = array("apple"=>"red", "grass"=>"green","sky"=>"blue","night"=>
-
C语言中的sizeof操作符用法及和strlen的区别
一. 定义: sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数.其返回值类型为size_t,在头文件stddef.h中定义.在32位系统中: char的sizeof值为1,char是我们编程能用的最小数据类型. short的sizeof值为2: int.float.long为4: double为8: 所有的指针的sizeof值都为4. 二.语法: sizeof有三种语法形式,如下: 1) sizeof( object ); //
-
C语言位运算和sizeof运算符详解
位运算和sizeof运算符 C语言中提供了一些运算符可以直接操作整数的位,称为位运算,因此位运算中的操作数都必须是整型的.位运算的效率是比较高的,而且位运算运用好的话会达到意想不到的效果.位运算主要有6种:与(&),或(|),取反(~),异或(^),左移(<<),右移(>>). 1.位运算中的类型转换 位运算都必须进行Integer Promotion.在进行运算之前,都必须将char型.short型的数据转换为int或者unsigned int型再参与运算. 如下面这段程
随机推荐
- AngularJS入门教程(零):引导程序
- Angular2.js实现表单验证详解
- 屏蔽相应键盘按钮操作
- javascript 模拟坦克大战游戏(html5版)附源码下载
- 当年学习ADO.NET的笔记
- php+html5使用FormData对象提交表单及上传图片的方法
- 从MySQL数据库表中取出随机数据的代码
- Android 微信摇骰子和猜拳作弊器原理解析
- 捕获浏览器关闭、刷新事件不同情况下的处理方法
- javascript 获取iframe里页面中元素值的方法
- 关于file_get_contents返回为空或函数不可用的解决方案
- MyBatis学习教程之开发Dao的方法教程
- sql 删除表中的重复记录
- JavaScript按日期查询MongoDB中的数据的要点示例
- 基于jquery实现表格内容筛选功能实例解析
- Javascript查询DBpedia小应用实例学习
- 站长必知:域名选取的十大技巧
- LNMP系列教程之 解决sendmail不能发送邮件问题
- Mac OS下为Android Studio编译FFmpeg解码库的详细教程
- C和C++ const的声明差异