由以下几个例子来说明sizeof和strlen的区别
①char* ss="0123456789"
sizeof(ss)的结果是4,ss指向字符串常量的字符指针
sizeof(*ss)的结果是1,*ss是第一个字符
②char ss[]="0123445678";
sizeof(ss)的结果是11,ss是数组,计算到'\0'的位置,因此是10+1;
sizeof(*ss)的结果是1,*ss是第一个字符
③char ss[100]="0123456789";
sizeof(ss)的结果是100,ss表示在内存中预分频的大小,100*1
strlen(ss)的结果是10,它的内部是用一个循环计算字符串的长度的,直到遇到'\0'为止
④int ss[100]={0,1,2,3,4,5,6,7,8,9};
sizeof(ss)的结果是400 100*4
sttrlen(ss)错误,strlen的参数只能是char*,并且是以'\0'结尾
通过对sizeof和strlen的理解得出二者的区别如下:
①sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int 类型,该类型保证能容纳实现所建立的最大对象的字节大小
②sizeof是运算符,strlen是函数
③sizeof可以用类型作为参数,而strlen只能用char*做为参数,并且必须是'\0'作为结尾,sizeof还可以用函数作为参数比如:
short f();
cout<<sizeof(f());
④数组作为sizeof用做参数不退化,传递给strlen就退化为指针了
⑤大部分编译程序在编译的时候就把siseof计算过了,是类型或者变量的长度,这就是用sizeof(x)可以用来定义数组维数的原因
⑥strlen的结果要在运行的时候才能计算出来,用来计算字符串的程度,而不是类型所占的大小
⑦当使用了一个结构类型或者变量时候,sizeof返回实际的大小,当使用一个静态的空间数组时候,sizeof返回全部数组的尺寸
分享到:
相关推荐
分析sizeof和strlen具体区别(源码和解析)
本文介绍的是sizeof与strlen区别
总结sizeof 和strlen的区别: sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节...
sizeof 和strlen的区别
操作符sizeof和函数strlen的区别,代码已经过测试,可以直接使用!
c语言中最常遇到的问题是字符串处理问题,特别是字符串长度:sizeof与strlen.两者使用时一定要区分开,否着会很容易出错。本文对两者的区别做了详细介绍。
本文档介绍了sizeof和strlen的区别和联系,其中sizeof为运算符,strlen为C语言库函数。而sizeof在计算字符串的长度时,将结束符'\0'也算在内,但是strlen不将它算在内。
sizeof与strlen的区别共4页.pdf.zip
c语言strlen转义字符,转义字符 & sizeof & strlen-CSDN博客.mhtml
strlen和sizeof的区别
都是在网上下载资料,然后自己整理而成。详细的介绍了strlen和sizeof的区别和用法,这在应用程序是,有很高的帮助。
1. strlen 是个函数,只能以 char* (字符串)作为参数,来计算指定字符串 str 的度,但不 2. sizeof 是个单运算符,它的参数可以是数组
strlen和sizeof的区别 strlen 和 sizeof 的使用
strlen和sizeof的区别 和代码示例
strlen和sizeof的区别
主要介绍了C语言中的sizeof操作符用法及和strlen的区别,本文讲解了sizeof的定义、sizeof的语法以及使用实例,最后给出sizeof与strlen的区别,需要的朋友可以参考下