码迷,mamicode.com
首页 > 编程语言 > 详细

菜鸟入门记录篇1--C语言中两种关于字符串表达的方法(数组和指针)

时间:2015-12-29 22:33:06      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

现需表示一个字符串“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

 

菜鸟入门记录篇1--C语言中两种关于字符串表达的方法(数组和指针)

标签:

原文地址:http://www.cnblogs.com/boligebo/p/5087118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!