C语言基础---字符指针变量和字符数组的区别

  1.字符数组由若干元素组成,每个元素中放一个字符,而字符指针变量存放的是地址(字符串第一个字符的地址),绝不是将字符串放到字符指针变量中。

  2.赋值方式:可以对字符指针变量赋值,但不能对数组名赋值,可以采用以下方式对字符指针变量赋值:

char *a;
a = "I love China";

  不能用以下方式对字符数组名赋值:

复制代码
char str[14]
str[0] = 'I';
str = “I love China”  /*数组名是地址,是常量,不能赋值*/
char *a = "I love china!";  /*定义字符指针变量a,并把字符串第一个元素的地址赋给a*/

/*对于数组的初始化*/
char str[14] = "I love China!";  /*定义字符数组,并把字符串赋给数组中各元素*/
/*以上定义不等价于*/
char str[14];
str[] = "I love China!"/*企图把字符串赋给数组中个各元素,错误*/
复制代码

  注意:数组可以在定义的时候对各个元素赋初值,但不能用赋值语句对数组中全部元素整体赋值。

  (3)存储单元的内容。编译时为字符数组分配若干存储单元,以存放各元素的值,而对字符指针变量,只分配一个存储单元。

  如果定义了字符数组,但未对它赋值,这时数组中元素的值是不可预料的。可以引用(如输出)这些值,结果显然是无意义的,但不会造成严重后果,容易发现和改正。

  如果定义了字符指针变量,应当立即把第一个字符变量的(或字符数组元素)的地址赋给它,使它指向一个字符型数据,如果未对他赋一个地址值,此时向该指针变量指向的地址输入一个数据,很可能会出现严重的后果。

  (4)指针变量的值可以改变,而数组名代表一个固定的值(数组元素的首地址),不能改变。

  (5)字符数组中各元素的值是可以改变的 (可以对他们再赋值),但字符指针变量指向的字符串常量中的内容是不可取代的(不能对它们再赋值)。

posted @   吴然_O_o_o  阅读(603)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示