C语言学到指针了,我经常把数组指针和指针数组弄混,它俩究竟有何区别?该如何理解?( 二 )


char *p3[3];[] 的优先级高于 * ,说明 p3 首先是个数组,什么类型的数组呢?char* 型的,char* 表示一个指针类型,所以 p3 就是一个指针数组 。
如果使用指针数组指向 name,就不能直接把 name 赋值给 p3 了,因为类型不同 。但是,p3 里存放的都是 char* 型的指针,即 p3[0],p3[1],p3[2] 是 char* 型的指针,而 name[0],name[1],name[2] 也是 char* 型的指针,所以可以把 name[N] 赋值给 p3[N],请看如下C语言代码:

C语言学到指针了,我经常把数组指针和指针数组弄混,它俩究竟有何区别?该如何理解?

文章插图
编译并执行,可以得到如下输出:
C语言学到指针了,我经常把数组指针和指针数组弄混,它俩究竟有何区别?该如何理解?

文章插图
与预期一致 。这样,我们就使用了C语言中的指针数组访问了 name 数组 。
小结到这里,C语言中的数组指针和指针数组两者的区别就豁然开朗了,数组指针是一个指针变量,它占有内存中一个指针的存储空间 。指针数组是多个指针变量,也即数组,以数组形式存在内存当中,占有多个指针的存储空间 。
C语言学到指针了,我经常把数组指针和指针数组弄混,它俩究竟有何区别?该如何理解?

文章插图

欢迎在评论区一起讨论,质疑 。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦 。
从名字上就能看出区别,数组指针是一个指针,是指向这个数组的指针 。指针数组是一个数组,这个数组的每个元素都是一个指针 。
数组指针顾名思义是一个指向数组的指针 。
指针数组同理是由一些指针类型数据组成的数组 。数组的每个元素都是一个指针 。
你直接理解最后两个字的字面意思就行 。最后两个字是指针,这就是一个指针 。是数组就是一个数组 。当然数组名本身也是一个指向数组第一个元素的地址的指针 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。