全部博文(214)
分类:
2007-11-18 11:51:26
字符指针:在说明这个概念之前,先要说明两个概念。1、字符串常量:由“”标识,但不是用来初始化数组的字符串,叫做字符串常量。字符串类型的常量是指向字符串的指针,类型是 char * 2、字符串数组:数组中的每个元素都是char类型的变量。
字符串常量的格式和特点:字符串常量通常存储在data数据区的const区。而字符数组是根据其数据声明的状态存储在内存不同的区域的。如果是全局变量,则存储在data区的全局或静态区,如果是局部变量,则存储在内存的栈区。
Heap | |
Stack | |
Data
|
Const |
Common | |
Data | |
Code |
当编译器遇到字符串常量时,便把他的指针放在Data区的Const区,并以“\0”作为结尾,同时编译器会记下其地址,并在程序中引用该地址。
输出字符指针就是输出字符串,直到遇到字符串的结束符号“0”。
再将字符常量赋给字符指针之后,该指针一般不能再赋值,如果再次赋值的话,会造成原来的字符串无法访问的情况,也就是说,该字符串仍然在内存的Data区,但是无法访问,会造成内存的浪费。
两个字符串常量的比较是地址的比较,两个数组的比较也是地址的比较。
字符串赋值,不能直接将字符串赋给一个字符数组,原因是字符数组是常量指针,不能做左值操作。
//explame
Char buffer[10];
buffer=”hello”; //error
若要对字符串进行赋值操作,则必须使用如下函数:
char * strcpy( const char * dest , const char * src) //该函数的原形,该函数返回的dest的值,该函数仅能对以“/