C语言字符串

用双引号括起来的内容称为字符串字面量,也叫做字符串常量。双引号中的字符和编译器自动加入末尾的\0字符,都作为字符串储存在内存中,并且从ANSIC标准起,如果字符串字面量之间没有间隔,或者用空白字符分隔,C会将其视为串联起来的字符串字面量。如:

char greeting[50]= "Hello , and"" how are  "" you";等价于:

char greeting[50]= "Hello , and how are   you";

字符串常量属于静态存储类别。而且我觉得很有意思的一点是被双引号括起来的字符串被视为指向该字符串存储位置的指针,这一点就像数组名是指向该数组位置的指针一样。

可以通过数组创建字符串也可以通过指针创建字符串。如:

const char m1[40]="Limit  yourself to one line's worth.";

const char * pt1 ="Something is  pointing at me.";

这两种方式的主要区别是:

用数组创建字符串,首先字符串是储存在静态存储区,当程序运行的时候,才会开始为数组分配内存,此时会将字符串拷贝到数组中,这个时候字符串有两个副本,一个是在静态内存中的字符串字面量,另一个是储存在数组ar1中字符串。

而用指针创建的字符串,在程序开始执行的时候会把字符串的地址储存在指针变量中去。

按理说字符串是常量,但是如果我们通过指针创建的话,就可能修改它里面存储的内容,所以推荐方式是用下面的方法初始化

字符串。

const chatr * p1="Beare the Flingons!";













猜你喜欢

转载自blog.csdn.net/dream_follower/article/details/80560870