这里介绍字符数组与字符指针的区别
下面通过一个例子进行介绍
char message1[] = "Hello";
char *message2 = "Hello";
上面两个 message 的变量看起来好像是一样的,但实际他们的意义是不一样的,前者代表的是字符数组的初始化,后者则是一个字符指针指向一个字符串常量
为了验证上面的说法,下面我们执行一些对这两个变量的操作
message1++; // ERR,数组名的地址是不能修改的
message2++; // 指针的地址可以进行修改
message1[0] = 'h'; // 字符数组可以修改数组元素
*(message2+1) = 'h'; // ERR,可能过编译,运行会段错误
上面分别对 message 的两个变量的地址和值进行了修改,通过结果可以进行二者的区分
测试程序如下:
#include <stdio.h>
char message1[] = "Hello";
char *message2 = "Hello";
void main()
{
//message1++; // ERR
message2++;
message1[0] = 'h';
//*(message2+1) = 'h'; // ERR
printf("message1 = %s n", message1);
printf("message2 = %s n", message2);
}