用字符数组和字符串指针都可实现字符串的存储和运算,但是两者是有区别的。
1) 字符数组是一个数组,每个元素的值都可以改变。而字符串指针指向的是一个常量字符串,它被存放在程序的静态数据区,一旦定义就不能改变。这是最重要的区别。
关于静态存储区的概念请查看:C语言内存模型(内存组织方式)
下面的代码在运行期间将会出错:
#include <stdio.h>
int main(){
char str1[] = "C Language";
char *str2 = "C Language";
str1[1] = '-';
*(str2+1) = '-'; //错!不能改变字符串常量的值
printf("str1 = %s\n", str1);
return 0;
}
2) 对字符串指针方式:
可以写为:
而对数组方式:
不能写为:
只能对字符数组的各元素逐个赋值。