Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 192|回复: 0

[默认分类] 指针数组和数组指针的区别

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-6 11:15:03 | 显示全部楼层 |阅读模式
    这两个名字不同当然所代表的意思也就不同。我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了。从英文解释或中文全称看就比较容易理解。
    指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针
    数组指针:a pointer to an array,即指向数组的指针
    还要注意的是他们用法的区别,下面举例说明。
    int* a[4]     指针数组      
                     表示:数组a中的元素都为int型指针     
                     元素表示:*a   *(a)是一样的,因为[]优先级高于*
    int (*a)[4]   数组指针      
                     表示:指向数组a的指针
                     元素表示:(*a)   
    注意:在实际应用中,对于指针数组,我们经常这样使用:
    1. typedef int* pInt;
    2. pInt a[4];
    复制代码
    这跟上面指针数组定义所表达的意思是一样的,只不过采取了类型变换。
    代码演示如下:
    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. int c[4]={1,2,3,4};
    6. int *a[4]; //指针数组
    7. int (*b)[4]; //数组指针
    8. b=&c;
    9. //将数组c中元素赋给数组a
    10. for(int i=0;i<4;i++)
    11. {
    12. a[i]=&c[i];
    13. }
    14. //输出看下结果
    15. cout<<*a[1]<<endl; //输出2就对
    16. cout<<(*b)[2]<<endl; //输出3就对
    17. return 0;
    18. }
    复制代码
    注意:定义了数组指针,该指针指向这个数组的首地址,必须给指针指定一个地址,容易犯的错得就是,不给b地址,直接用(*b)=c给数组b中元素赋值,这时数组指针不知道指向哪里,调试时可能没错,但运行时肯定出现问题,使用指针时要注意这个问题。但为什么a就不用给他地址呢,a的元素是指针,实际上for循环内已经给数组a中元素指定地址了。但若在for循环内写*a=c,这同样会出问题。总之一句话,定义了指针一定要知道指针指向哪里,不然要悲剧。
    类似的还有指针函数和函数指针,遇到了再说吧。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-24 05:05 , Processed in 0.371891 second(s), 35 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表