sizeof与strlen的区别
来源:互联网 发布:java string是什么意思 编辑:程序博客网 时间:2024/06/01 09:13
char str[20]="0123456789";
int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。
int b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响
============================================================================================
char *str1="absde";
char str2[]="absde";
char str3[8]={'a',};
char ss[] = "0123456789";
输出:
sizeof(str1)=4
sizeof(str2)=6;
sizeof(str3)=8;
sizeof(ss)=11
首先说明一点,char类型占一个字节,所以sizeof(char)是1,这点要理解
str1是一个指针,只是指向了字符串"absde"而已。所以sizeof(str1)不是字符串占的空间也不是字符数组占的空间,而是一个字符型指针占的空间。所以sizeof(str1)=sizeof(char*)=4,在C/C++中一个指针占4个字节
str2是一个字符型数组。C/C++规定,对于一个数组,返回这个数组占的总空间,所以sizeof(str2)取得的是字符串"absde"占的总空间。"absde"中,共有a b s d e \0六个字符,所以str2数组的长度是6,所以sizeof(str2)=6*sizeof(char)=6
str3已经定义成了长度是8的数组,所以sizeof(str3)为8
str4和str2类似,'0' '1' ... '9'加上'\0'共11个字符,所以ss占的空间是11
总之,对于指针,sizeof操作符返回这个指针占的空间,一般是4个字节;而对于一个数组,sizeof返回这个数组所有元素占的总空间。char*与char[]容易混淆,一定要分清,而且char*="aaa"的写法现在不被提倡,应予以避免
而strlen不区分是数组还是指针,就读到\0为止返回长度。而且strlen是不把\0计入字符串的长度的。
- sizeof与strlen的区别
- sizeof()与strlen()的区别
- sizeof 与 strlen 的区别
- sizeof与strlen的区别
- strlen与sizeof的区别
- sizeof()与strlen()的区别
- strlen与sizeof的区别
- Sizeof与Strlen的区别
- strlen与sizeof的区别
- sizeof与strlen的区别
- sizeof与strlen的区别?
- sizeof与strlen的区别
- strlen与sizeof的区别
- sizeof与strlen的区别
- sizeof与strlen的区别
- strlen与sizeof的区别
- Sizeof与Strlen的区别
- strlen与sizeof的区别
- PAT 乙级练习题1018. 锤子剪刀布 (20)
- 基于MAC OSX的串口助手源代码讲解(上)
- spring boot之统一错误异常处理
- MongoDB学习笔记之 第4章 MongoDB整合Spring
- spring boot整合mybatis
- sizeof与strlen的区别
- 算法竞赛入门经典第3章习题
- php中的json_encode()和json_decode()编码与反编码
- JZOJsenior3484.【NOIP2013模拟联考10】密码(substring)
- MINI2440裸机实验之SDRAM
- 创建一个Redis工具类
- 下面是一个5*5的螺旋矩阵,试编程打印出此形式的n*n(n<10)阶的方阵
- 虚拟机安装步骤
- codevs2298 石子合并(直线形