最近听到有小伙伴说“指针就是数组,数组就是指针,”我大为惊愕,转念一想,这或许是很多初学者容易踩的坑吧!
我们首先来看一段代码
单从打印的结果来看,好像是没有什么区别,但这是真的吗???
假的!
现在让我们来看看吧!
1、监视
我们可以看出arr1是数组,arr2是指针。
2、内容能改吗?
先说结论,arr1里面放的内容能改,而arr2指向的区域里的内容不能修改!
看着段代码(有毛病!!)
这是vs2022上的运行结果
什么都没有
为什么?
程序直接崩溃了!
还是这句话:“arr1里面放的内容能改,而arr2指向的区域里的内容不能修改!”
这和他们所存放的地址有关,这里不展开讲。
3.
我们先来对比这两个代码
很明显,如果你写出第一个代码来,你会得到一个大嘴巴子
而第二的代码是没有问题的。
第而个代码的逻辑其实就是----pp里原本存的"abcdefg"的首元素地址,现在存的"sdfgh"的首元数地址。(唯一的问题就是我们在内存中开辟了一块空间存放"abcdefg",现在永远找不到了)
最后总结一下:“指针就是数组,数组就是指针”大错特错!!我想了一想,大概是数组名有时可以表示首元数地址所带来的误解吧。
好了,希望今天能给你带来帮助。