萌新求教,关于数组和指针关系
一直弄不大清楚数组和指针的关系,最开始我以为数组名就是个指针,这问题困惑了很久,也许是之前不怎么用心,一直没想出差别来。百度搜出的内容还又臭又长的。刚刚就想自己写代码测试,测试了以后感觉豁然开朗。瞬间明白了指数和数组的区别。请教下我的想法对不对。
比如我定义一个数组 char a。意思就是我在内存里划出一块10个字节的内存,这块内存被我命名为 a, a 的地址和 a 的值一样。
定义一个 char* p=a,意为划出4个字节的内存,这块内存里储存了 a 的地址,即分配指针类型的内存存储地址,使 p 指向了 a 的开头,可用 *p 访问 a 的值
我原来最大的困惑是以 p 这样的方式访问 a 的元素,跟 a 等同,加上有数组名是个指针的说法,我就以为 a 同 p 是一模一样的。
现在明白了,这里的差别在于,a相当于指针, a就相当于向后移动了 i 个字节。但是 p 实质上应当是 *(p+i) 这样对么?只是C语言允许我们直接简化写成p ,这么理解应该没错的吧? 超市储物柜知道吧? 数组就是那一堆储物柜.
指针就是员工指向储物柜.
骑龟赛跑 发表于 2019-7-17 00:11
超市储物柜知道吧? 数组就是那一堆储物柜.
指针就是员工指向储物柜.
比喻+2 很形象 骑龟赛跑 发表于 2019-7-17 00:11
超市储物柜知道吧? 数组就是那一堆储物柜.
指针就是员工指向储物柜.
真的是特别的形象啊。
想问指针 p[ i ] 这样访问数组元素,是不是就是*(p+i)的简写? 数组名就是指向数组首个元素地址的指针吧 指针的++就是前移后移,不影响数组本身的值 理解一下取地址符&的意思就好了 骑龟赛跑 发表于 2019-7-17 00:11
超市储物柜知道吧? 数组就是那一堆储物柜.
指针就是员工指向储物柜.
大佬请问群组又是什么意思呢?最近突然遇见了百思不得其解 两个方法,一个是下标法,一个是指针法,变量也好,数组也罢,皆是地址… a和p不一样在于一个地址常量,一个变量… 骑龟赛跑 发表于 2019-7-17 00:11
超市储物柜知道吧? 数组就是那一堆储物柜.
指针就是员工指向储物柜.
数组=储物柜
指针=储物单
用p或*(p+i) 只是储物单上 编号的不同表达方式而已。 楼主理解没有错 over
页:
[1]
2