浅谈字符串

(1)字符串的定义及初始化

        char arr[10]={'a','b','c'};//剩余部分为‘/0’,是字符串

char brr[]={'a','b','c'};//没有‘\0’,是字符数组,不是字符串
char crr[10]={"abc"};//字符数组特有,是字符串
char drr[10]="abc";//字符数组特有,是字符串
char err[]="abc";//字符数组特有,是字符串
char frr[10]="";//字符串里由10个‘\0’,是字符串
总结:字符串:以“”包括的字符序列,自带‘\0’

  字符串的标记‘\0’,只要有‘\0’都是字符串

          字符串一定是字符数组,字符数组不一定是字符串

(2)char *str1 = "abcde";//字符串常量,不允许修改

char str2[] = "abcde";//字符数组,有\0,所以也是字符串

//str1[0] = 'x';//试图修改字符串常量的值,写错误
str2[0] = 'x';

//strcpy(str1,"xyz");    //error

           //  把str1复制成为“xyz”,但str1是字符串常量不允许修改

//strcpy(str2,"hello world");//error 

          //越界,str2仅占6个字节

总结:字符串崩溃原因:

           1、试图修改字符串常量的值

           2、越界

(3) int main()
 {
char str1[10];
gets(str1);//危险,越界,建议使用fgets()
printf("str1=%s\n",str1);

return 0;

 }

(4)字符串练习

int main()
{
char str1[100] = "abcde";//100,5 
//指定了数组大小,所以所占字节为100,字符串长度为有效长度不包含'\0',所以
长度为5 

char str2[] = "abcde";//6,5
//没有指定大小,所占字节为6长度为5 
char str3[100] = "abcdef\0ijk\n";//100,6
//指定了数组大小,所以所占字节为100,求字符串长度时,遇'\0'结束,所以长度为6 
char str4[] = "abcdef\0ijk\n";//12,6
//算所占字节大小时,不以'\0'为结束标志,切勿忘记字符串自带的'\0',所以字节大小为12 
char *str5 = "abcde";//4,5
//定义了一个指向字符串的指针,指针所占字节为4 
char *str6 = "abcdef\0ijk\n";//4,6
//同上 
printf("%d,%d\n",sizeof(str1),strlen(str1));
printf("%d,%d\n",sizeof(str2),strlen(str2));
printf("%d,%d\n",sizeof(str3),strlen(str3));
printf("%d,%d\n",sizeof(str4),strlen(str4));
printf("%d,%d\n",sizeof(str5),strlen(str5));
printf("%d,%d\n",sizeof(str6),strlen(str6));

return 0;
}

阅读更多
上一篇const 的基本用法
下一篇二维数组的世界
想对作者说点什么? 我来说一句

浅谈OFBIZ.doc

2009年07月07日 930KB 下载

非常棒的缓存技术教程

2011年03月30日 471KB 下载

浅谈CSRF攻击方式

2011年03月09日 295KB 下载

ERP\erp浅谈ERP\erp浅谈

2010年07月16日 2.19MB 下载

浅谈GoogleEarth二次开发技术

2011年11月01日 325KB 下载

浅谈C++容器.pdf

2010年01月16日 275KB 下载

浅谈输电线路防雷接地

2009年03月10日 78KB 下载

没有更多推荐了,返回首页

关闭
关闭