strlen和sizeof的使用及用法补充
来源:互联网 发布:开名淘宝店是真是假 编辑:程序博客网 时间:2024/06/06 00:42
<首先要知道strlen是求长度的,而sizeof是求大小的>
1.strlen的基本用法
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h>#include<string.h>int main(){char arr1[]="abcd";char arr2[]={'a','b','c','d'};printf("%d\n",strlen(arr1));//此时输出为4printf("%d\n",strlen(arr2));//此时输出为随机值return 0;}</span></span>为什么会是随机值呢?
因为strlen计算长度时是以‘\0’为基准的,它会直到遇到‘\0’时就停止计算。主函数里第一行数组初始化时自动在最后添加了一个‘\0’,而第二行不会添加‘\0’,所以第二种并不确定‘\0’具体出现的位置。
2.sizeof的基本用法
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h>#include<string.h>int main(){char arr1[]="abcd";char arr2[]={'a','b','c','d'};printf("%d\n",sizeof(arr1));//此行输出为5printf("%d\n",sizeof(arr2));//此行输出为4return 0;}</span></span>第一种初始化方式添加了‘\0’,所以总的有五个字符,而第二种没有‘\0’,所以数组元素大小为4。
3.有关于指针的
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h>#include<string.h>int main(){char *str="abcdef";printf("%d\n",strlen(str));//此行输出为6printf("%d\n",sizeof(str));//此行输出为4return 0;}</span></span>注意:指针的大小永远为4,所以sizeof输出的是4。
把代码稍微改动一下:
<font color="#993300" size="4"><span style="color:#330000;"><span style="color:#336666;"><span style="color:#330000;">#include<stdio.h>#include<string.h>int main(){ char str[]="abcdef";printf("%d\n",strlen(arr1));//此行输出为6printf("%d\n",sizeof(arr2));//此行输出为7return 0;}</span></span></span></font>相同的道理,sizeof计算的时候还加上了‘\0’。
再看一个代码:
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h>#include<string.h>int main(){int a=1;int b=2;int c=3;char *pArray[10]={&a,&b,&c};printf("%d\n",strlen(pArray));//此时输出为3printf("%d\n",sizeof(pArray));//此时输出为40return 0;}</span></span>上边定义的是指针数组,数组里每个元素都为指针。所以数组大小为10,每个元素大小又为4,总共就为40。
4.关于数组初始化了元素个数时
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h>#include<string.h>int main(){char str[10]="abcd";printf("%d\n",strlen(str));//此行输出为4printf("%d\n",sizeof(str));//此行输出为10return 0;}</span></span>当数组初始化时固定了元素个数时,siazof计算的是驻足整个总共的大小。
若把程序稍微改动一下:把str[10]改为str[4]时strlen输出的值为随机值。因为还会添加一个‘\0’,数组大小超出了4个元素变成了5个。
5.关于数组做函数参数时
<span style="font-size:18px;color:#336666;"><span style="color:#330000;">#include<stdio.h>void fun(int array[10]){printf("%d\n",sizeof(array));//此时输出的时4}int main(){int array[10]={0};fun(array);return 0;}</span></span>数组名做函数参数时,实际上是发生了降级处理。这里的array在函数里面作参数时传的是首元素的地址。因此sizeof所求的是数组中第一个元素的大小。
<总结>:只要记住最核心的一句话:strlen所求的是长度,以‘\0’作为计算的结束标志,若找不到‘\0’事则输出随机值;而sizeof所求的是大小,当数组以字符串形式给出初始化时,其所求的长度需要加上‘\0’。指针的大小永远为4。
0 0
- strlen和sizeof的使用及用法补充
- strlen 和sizeof的用法
- sizeof和strlen的用法
- sizeof 和strlen的用法
- sizeof()和strlen()用法
- sizeof 和 strlen用法
- _countof、sizeof、strlen的区别和用法
- 关于sizeof 和strlen 的用法
- strlen与sizeof的区别和用法
- 关于sizeof和strlen的一些用法
- strlen 和 sizeof 的基本用法(举例)
- 关于sizeof和strlen的使用
- sizeof和strlen的使用与区别
- sizeof的用法及与strlen的比较
- sizeof的用法及与strlen的比较
- sizeof 与 strlen 的一些用法及区别
- sizeof与strlen的用法
- sizeof与strlen的用法
- iOS用户数据安全:Keychain、Touch ID以及1Password
- 代码移植性与高效性的折衷——linux舍高效率而取移植性
- 在CentOS上安装Java环境:[1]使用yum安装java
- 四月份计划
- K临近算法
- strlen和sizeof的使用及用法补充
- 大数据时代有哪些投资机遇?(来源: BWCHINESE中文网)
- 归并排序和快速排序的实现
- JDeveloper Issue: "The specified schema object name is not an existing object. Unselect Existing Ob
- @property的属性
- Linux 内核中的 GCC 特性
- 缓存映射小笔记
- Android字体切换
- J2SE——面向对象总结