菜鸟入门记录篇1--C语言中两种关于字符串表达的方法(数组和指针)
现需表示一个字符串“itcast”,表示方法如下所列:
方法1:
char name[]="itcast"; //此时定义的是一个字符串变量,数组内包含了6个字母及‘\0’一共7个元素,储存在内存的栈里面,数组内部的字符可以随意改动;
(注:内存的“栈”里面储存的是局部变量,值是可以随意更改的)
name[0]='t';
printf(“%s\n”,name);
输出结果为:ttcast;
方法2:
char *name="itcast"; //此时定义的是一个字符串常量,指针变量name指向的是该字符串首字符'i'的地址,字符串储存在常量区内,
常量字符串是不能更改的,这个字符串会被缓存起来方便下次使用
printf("%s\n",name); //%s是从指针变量name所指向的字符串的第一个字符开始输出,直到读取到'\0'才结束。
输出结果为:itcast
两者的差别:
当你用数组再定义一个同样的字符串char name2[]="itcast"时,内存需再为你开辟一个新的地址来储存这个字符串;
而当你用指针再定义相同的一个字符串char *name2="itcast"时,name2所存储的地址值和name1是一样的,同样指向常量区内"itcast"所储存的地址,内存不会再开辟一个新的内存空间存放”itcast”,是直接调用缓存。
两者所用的情况:
1、当你的字符串是需要经常修改的,就用数组来表示字符串;
char name[]="itcast";
2、当你的需要经常调用这个字符串且字符串内容不修改,就可以用指针来表示,这样可以减少内存的使用;
char *name="itcast";
PS:这是立志要学IOS开发写的第一篇技术博客,虽然内容很基础,但也算迈出了第一步,为了自己的未来加油吧!在此感谢鸡汤文tiny叔及带我入门小三同志。2015.12.29