strlen /sizeof/ 0,'\0','0'中的陷阱

来源:互联网 发布:c语言最大公约数函数 编辑:程序博客网 时间:2024/05/16 18:45
#include<stdio.h>#include<string.h>main(){char x[]="STRING";x[0]=0; x[1]='\0';x[2]='0';printf("%d %d\n",sizeof(x),strlen(x));}
  结果为7,0
 
一旦char[]="STRING",这时候分配的内存7字节,之后无论怎么修改如何赋值都不会改变


字符串是借助于字符型一维数组来存放的,'\0'ASCLL代码值为0,它作为标志占用存储空间但不记入串的实际长度,所以用来作为字符串的结束标志
所以数字0跟'\0'的效果一样 

#include<stdio.h>#include <string.h>int main(void){char p[]="123067";printf("%d\n",strlen(p));               //结果为6p[3]=0;printf("%d\n",strlen(p));              //结果为3字符串是借助于字符型一维数组来存放的,'\0'ASCLL代码值为0,它作为标志占用存储空间但不记入串的实际长度,                                       // 所以用来作为字符串的结束标志 ,所以数字0跟'\0'的效果一样 return 0;}


0 0
原创粉丝点击