中易网

C语言指针数组指针怎样理解?

答案:3  悬赏:30  
解决时间 2021-03-15 15:31
C语言指针数组指针怎样理解?
最佳答案
1、指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针;数组指针:a pointer to an array,即指向数组的指针。
int* a[4]     指针数组    
                  表示:数组a中的元素都为int型指针   
                  元素表示:*a[i]   *(a[i])是一样的,因为[]优先级高于*
int (*a)[4]  数组指针    
                  表示:指向数组a的指针
                  元素表示:(*a)[i]  

2、下面通过实例来说明数组指针与指针数组的区别:  

#include 
using namespace std;
int main()
{
    int c[4]={1,2,3,4};
    int *a[4];   // 指针数组
    int (*b)[4]; // 数组指针
    b=&c;
    // 将数组c中元素赋给数组a
    for(int i=0;i<4;i++)
    {
        a[i]=&c[i];
    }
    // 输出看下结果
    cout<<*a[1]<     cout<<(*b)[2]<     return 0;
}
全部回答
在c语言中,当把数组名赋值给指针时,那么该指针指向数组的第一个元素,也就是该指针变量存放的是数组第一个元素的地址。所以  执行语句 int a[5]={1,3,5,7,9},*p=a;之后, p指向a[0], 而上面for循环中p<a+5等价于p<=a+4表示只要指针指向的元素地址小于等于数组a中的a[4]的地址,就输出p指向的元素。 而p++表示使指针p指向a的下一个元素, 所以结果自然是依次输出a[0],a[1],a[2],a[3],a[4]的值,即13579了
  • 指针数组,指数组元素就是指针
  • 数组指针,对于一维数组来说就是数组名
  • 故对于一维数组来说,数组名是第一个元素的指针,而元素本身也是指针,故数组名是指向指针的指针。
  • 例如: int * p = &a; int ** q = &p;
  • 则p中储存的是整形变量a的地址,而指针p自身也是变量(指针变量通常占4个字节),故q中储存的就是变量p的地址。q就成了指向指针的指针。
  • 我要举报
    如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
    大家都在看
    翠鸟蹬开苇秆飞过去。扩句
    海南大学三亚学院2009分数线估计要多少分(理
    西留庄村这个地址在什么地方,我要处理点事
    1.6自动档凯越,停车在P档,大多数时候拨不出来
    腰围 LX MX SX 是什么意思啊 怎么换算厘米?
    球球大作战fun young塔坦杯光环怎么获得
    北京站坐几号地铁直达石景山苹果园 (在线等
    水颐园养生堂停车场怎么去啊,有知道地址的么
    CAD中的内螺纹怎么画
    台式电脑为什么显卡更换后屏幕没信号 但原来
    晚上在街道放儿童充气城堡需要跟城管申请吗
    珠海社保交886.88元,工资是多少
    全城热恋时尚饰品超市这个地址在什么地方,我
    我学习不怎么好,但是我想努力求方法
    装修怎么选择?徐州家装公司哪个比较好?
    推荐资讯
    陈氏家族是从哪里起源的,家族里出现过哪些显
    win 8 打dota 没有攻击特效的 影魔影牙看不到
    从上面看到的是正方形的物体是一定是正方体。
    天使高达和恶魔高达出自于哪里?
    苹果6⃣️是真的回收回去吗?
    爱上你每分每秒。。。那首歌里有这句歌词
    市场上有可以接受定制的厨柜品牌吗?
    泰国蒙面佛带舍利子属于什么牌
    新桑塔纳配置这么低,开起来这么low,为什么
    PS用魔术棒再反选为什么还是有两个虚线框的?
    如果淘宝上的商家写了正品,可是买的不是正品
    绵阳南湖体育馆在哪里??
    手机登qq时,显示手机磁盘不足,清理后重新登
    刺客的套装怎么选啊?