C++ 指针 vs 数组

Posted moyu墨鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 指针 vs 数组相关的知识,希望对你有一定的参考价值。

指针和数组是密切相关的。事实上,指针和数组在很多情况下是可以互换的。例如,一个指向数组开头的指针,可以通过使用指针的算术运算或数组索引来访问数组。请看下面的程序:

当上面的代码被编译和执行时,它会产生下列结果:

var[0] 的值为 10

var[1] 的值为 100

var[2] 的值为 200

然而,指针和数组并不是完全互换的。例如,请看下面的程序:

把指针运算符 * 应用到 var 上是完全可以的,但修改 var 的值是非法的。这是因为 var 是一个指向数组开头的常量,不能作为左值。

由于一个数组名对应一个指针常量,只要不改变数组的值,仍然可以用指针形式的表达式。例如,下面是一个有效的语句,把 var[2] 赋值为 500:

*(var + 2) = 500;

上面的语句是有效的,且能成功编译,因为 var 未改变。


以上是关于C++ 指针 vs 数组的主要内容,如果未能解决你的问题,请参考以下文章

更新:C++ 指针片段

当指针指向数组时,为啥 operator(*) 的值不起作用?

vs2012调试时怎么查看堆中的数据(动态数组)? 求详细解答。 用的c++

字符数组VS字符指针

VS 2010 中的 C++ 调试访问冲突

C++ - 指针和“智能指针”