读书笔记-《字符串》

来源:互联网 发布:肖申克的救赎影评知乎 编辑:程序博客网 时间:2024/06/06 00:01

1.字符串表示

字符串是以空字符(\0)结尾的char数组。

(1)字符串定义:

基本方法有:字符串常量、char数组、char指针和字符串数组。

1>字符串常量(静态存储类):指位于一对双引号中的任何字符。
char greeting[50]="hello world";
/*把字符串看成指针*/#includevoid main(){printf("%S %p %c\n","we","are",*"space farers");}/*输出结果:we 0X0040c010 s*/

2>字符串数组及其初始化
const char m1[10]="hello world";
const char *m1[10]={ 'h','e','l','l','o',' ','w','o','r','l','d', '\0' };
m1是一个指定给定字符串的指针。

'\0' ? 字符串:字符数组

3>数组和指针的差别
声明:
char heart[]="I like cat";
char *head[]="I like dog";
主要差别在于数组名heart是个常量,指针head则是个变量。
head可以使用增量运算符;
左值原因:head=heart(允许)heart=head(不允许)

4>字符串数组
const char *mytal[5]={"hello","world","ni","hao"};
只存放字符串的地址
*mytal[0]='h',*mytal[2]='n';

char mytal_2[5][10];
存放5个完整的数组

char mytal_3[5];
与char mytal_2相比,节省空间,不规则的数组


2.指针和字符串

#includevoid main(){char *mesg="Don't be a fool!";char *copy;copy=mesg;printf("mesg=%s;&mesg=%p;value=%p\n",mesg,&mesg,mesg);printf("copy=%s;©=%p;value=%p\n",copy,©,copy);}/*输出结果mesg=Don't be a fool!;&mesg=0x0012ff48;value=0x0040a00copy=Don't be a fool!;©=0x0087ff48;value=0x0040a00copy=mesg;只是产生指向同一个字符串的第二个指针*/



原创粉丝点击