字符指针与字符数组之间的联系与区别

文章探讨了字符指针可以指向字符和字符串的本质,指出字符串常量不可修改,而数组中的字符串可以。通过示例代码解释了指针指向同一字符串时地址相同的原因,并总结了字符串指针的基本特性。
摘要由CSDN通过智能技术生成

我们先来看如下代码:

这段代码通过编译,我们觉得很正常因为,字符指针可以指向字符变量,但如果我们把变量a里面的单个字符换成一个字符串的时候,我们会发现编译依然通过。

这说明字符指针不仅可以指向字符,而且也可以指向一个字符串。其本质都是指向字符串第一个元素的地址。

但是我们能不能通过指针对指向的内容进修修改呢?

首先我们明确一点,p指针变量存放的不是字符串“abcdef”,而是存放a的首地址,然后我们通过指针去对‘a’进行修改会发现编译器报错

这是因为:

字符串为常量字符串我们不能对其进行修改

但是我们却可以修改数组中的字符串,因为数组中的字符串不属于常量字符串

为了了解字符指针与字符数组之间的关系我们看如下代码猜想一下结果会是什么:

这是运行后的结果:

我们先来分析数组:

既然是两个不同的数组,那么在内存中肯定不在同一个位置。然后数组名为首元素地址,所以str1与str2地址不相同。

接着我们来看用指针直接指向一个相同的字符串:

我们知道等号右边的为常量字符串,不能被修改,既然不能被修改,对于同一个内容,那我有必要存两份吗?

答案是不需要!

所以我们str3与str4指向的是同一个“hello world”,所以两者地址相同。

总结:字符串指针既可以指向一个字符又可以指向一个字符串本质上都是指向两者第一个字符的首地址,他们直接所指向的字符串为常量字符串不可以被修改,所以当两个指针所指向同一个字符串的时候,他们地址相同。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值