当前位置:网站首页>strlen跟sizeof区别
strlen跟sizeof区别
2022-07-30 12:51:00 【qq_25427995】
关于 strlen 与 sizeof 的区别:
strlen 是函数,sizeof 是运算符。
strlen 测量的是字符的实际长度,以’\0’ 结束(不包含’\0’ )。而sizeof 测量的是字符的分配大小,如果未分配大小,则遇到’\0’ 结束(包含’\0’ ,也就是strlen测量的长度加1),如果已经分配内存大小,返回的就是分配的内存大小。
比如:
char str[] = “Hello World”;
char str1[100] = “Hello World”;
cout << strlen(str) << endl;
cout << sizeof(str) << endl;
cout << sizeof(str1) << endl;
3.但是在子函数中,ziseof 会把从主函数中传进来的字符数组当作是指针来处理。指针的大小又是由机器来决定,而不是人为的来决定的。
#include
#include
#include
using namespace std;
void fun(char str[10])
{
cout << sizeof(str) << endl;
}
int main()
{
char str[] = “Hello World”;
fun(str);
return 0;
}
4.我们知道字符数组的初始化一次性赋值,也可以逐个赋值。可以指定数组的大小,也可以不指定数组长度。
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = “hello”;
char str2[] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’};
char str3[] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’};
printf("str1:%s\n",str1);
printf("str2:%s\n",str2);
printf("str3:%s\n",str3);
printf("str1:%d\n", strlen(str1));
printf("str2:%d\n", strlen(str2));
printf("str3:%d\n", strlen(str3));
return 0;
}
这是为什么呢?
我们知道字符串是以 ‘\0’ 为结束标志的,所以char str1[ ] = “hello” 等效于char str2[ ] = {‘h’ , ‘e’ , ‘l’ , ‘l’ , ‘o’ , ‘\0’} 。strlen函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到’\0’停止。而如果不在字符数组初始化的时候加上\0,那么strlen 得到的值就不是正确的数值,打印出来的结果也不是想要的结果。因此我们要避免这种情况,在初始化的时候要记得加上 \0,或者一次性赋初值。
5.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。而大部分编译程序在编译的时候就把sizeof计算过了是类型或是变量的长度。
6.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以’‘\0’'结尾的。
原文链接:https://blog.csdn.net/zhengqijun_/article/details/51815081
边栏推荐
猜你喜欢

There is no one of the strongest kings in the surveillance world!

一本通循环结构的程序设计第一章题解(1)

js 构造函数 return 非空对象,其实例化的对象在原型上的差异

ModelCoder状态机:对柴油机工况判断策略进行建模

DeFi 巨头进军 NFT 领域 用户怎么看?

什么是私有云?您应该知道的 6 个优势

【河北工业大学】考研初试复试资料分享

自从外包干了四年,基本废了...

为什么说Prometheus是足以取代Zabbix的监控神器?

腾讯称电竞人才缺口200万;华为鸿蒙3.0正式发布;乐视推行每周工作4天半?...丨黑马头条...
随机推荐
元宇宙的六大支撑技术
datax开启hana支持以及dolphinscheduler开启datax任务
Anaconda\Scripts\pip-script.py is not present ? 解决方案
电流电压采集模块DAM-6160
I built another wheel: GrpcGateway
Execution order of select, from, join, on where groupby, etc. in MySQL
Scala基础:数组(Array)、映射(Map)、元组(Tuple)、集合(List)
R语言ggstatsplot包grouped_ggwithinstats函数可视化分组小提琴图、并添加假设检验结果(包含样本数、统计量、效应大小及其置信区间、显著性、组间两两比较、贝叶斯假设)
odoo--qweb模板介绍(一)
【语音识别】基于GMM-HMM的语音识别系统
R语言筛选时间序列数据的子集(subset time series data)、使用window函数筛选连续日期时间范围内的数据(start参数和end参数分别指定起始和结束时间)
域名抢注“卷”到了表情包?ENS逆势上涨的新推力
dolphinscheduler单机化改造
当下,产业园区发展面临的十大问题
Why is Prometheus a monitoring artifact sufficient to replace Zabbix?
434. 字符串中的单词数
CMake library search function does not search LD_LIBRARY_PATH
dbaplus丛书丨《MySQL DBA工作笔记》限量签名版来了!
Current and voltage acquisition module DAM-6160
Heshu Group: Make smart cities smarter and make real life better