Chinaunix首页 | 论坛 | 博客
  • 博客访问: 691321
  • 博文数量: 214
  • 博客积分: 5015
  • 博客等级: 大校
  • 技术积分: 2285
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-18 17:02
文章分类

全部博文(214)

文章存档

2008年(43)

2007年(171)

我的朋友

分类:

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的值,该函数仅能对以“/0结尾的字符数组进行操作若要对其他类型数组进行操作的话应该使用 memcpy()

阅读(604) | 评论(0) | 转发(0) |
0

上一篇:printf 格式输出

下一篇:数组和指针总结

给主人留下些什么吧!~~