2012年(41)
分类: C/C++
2012-03-15 10:30:17
使用字符串指针和字符数组的区别
用字符数组和字符串指针都可以实现字符串的存储和运算。但是两者是有区别的。在使用时应该注意以下一个问题:
1、字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以改首地址为首的一块连续的内存空间中并以’\0’作为串的结束符。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。
2、对字符数组初始化赋值,必须采用外部类型或者静态类型,如static char str[]={“C labguage”};而对字符串的指针变量则无此限制,如char *ps=”C language”;
3、对字符串指针方式 char *ps=”C language”;可以写为:char *ps;ps=”C language”;而对于数组方式:static char str[]={“C language”};不能写为char str[20]; str={“C language”};而只能是对字符数组的各个元素进行逐个赋值。
从以上几点可以看出字符串指针变量与字符数组在使用是的区别,同事也可以看出使用指针变量更加方便。前面说过,当一个指针变量在未取得确定地址前使用是危险的,容易引起内存段错误。但是对指针变量直接赋值是可以的。因为C系统对指针变量赋值是要给以确定的地址。
因此,char *ps=”C Language”;或者char *ps; ps=”C language”;都是合法的。