| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 476 人关注过本帖
标题:关于指向数组指指针的指针的问题
只看楼主 加入收藏
EricZhan
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2010-7-9
结帖率:86.67%
收藏
 问题点数:0 回复次数:7 
关于指向数组指指针的指针的问题
若有一个指针**P要指针数组指针*a[5]时,是不是也像指向数组一样不用取址符,直接就是p=a.
搜索更多相关主题的帖子: 指针 
2010-07-27 09:03
ggyy4k
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:0 
上面**p,P为二级指针;再看*a[5],a[5]这个数组是一级指针,数组名就是二级常量指针。可见P与a都是二级指针,p=a完全正确。
2010-07-27 09:26
EricZhan
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2010-7-9
收藏
得分:0 
回复 2楼 ggyy4k
若**p是指向一级指针a[5]呢?
2010-07-27 09:37
ggyy4k
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:0 
以下是引用EricZhan在2010-7-27 09:37:51的发言:

若**p是指向一级指针a[5]呢?

这与上面是一样的,a[5]是一级指针数组,数组名还是二级指针啊
2010-07-27 09:41
EricZhan
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2010-7-9
收藏
得分:0 
以下是引用ggyy4k在2010-7-27 09:41:49的发言:

 
这与上面是一样的,a[5]是一级指针数组,数组名还是二级指针啊
真的不明白指向指针的指针的用法,求高手再讲解
2010-07-27 11:00
feieryuan
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-7-27
收藏
得分:0 
看书去,书上有答案
2010-07-27 14:02
BJ_BOY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:77
专家分:225
注 册:2010-2-4
收藏
得分:0 
指针类型的变量是存储“地址”的,这一点我相信大家都清楚。但有一点大家在学习的时候可能都忽视了,“地址”是要“绑定”一块空间的。比如:int x; int *p = &x; //p中存放的是变量x的存储地址,该地址“绑定”的空间就是sizeof(int)!

有了以上的认识,再来看楼主的问题(当然,实际上楼主的问题是不应该这样问的:))。

问:若有一个指针**P要指向数组指针*a[5]时,是不是也像指向数组一样不用取址符,直接就是p=a?
答:1)首先要纠正一下, *a[5]是指针数组,而不是数组指针。(*a)[5]才是数组指针。
  2)我们权且认为作者是问:如何定义一个**p指向指针数组*a[5]?
   指针数组*a[5]中的每一个元素都是指针,因此,给p赋值的正确语句应该是:p = &a[i];  // 0<=i<=4
      原因在于:a[i]中存放的是一重指针,&a[i]不正代表了“指针的存储地址”吗?

  3)补充:楼主的 "p = a;"也是对的。因为a代表了数组的地址,而数组中元素存放的也是“地址”,而此时:a不就是“指针的存储地址”吗?只不过大家要去区分:a、&a、&a[0]这三个地址有什么区别?答案是:它们里面存储的地址是相同的,但地址“绑定”的单元可能不一样大!大家去执行一下下面的程序就知道了。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int **p =  NULL;
    int b[5] = {1,2,3,4,5};
    int *a[5]={&b[0], &b[1],&b[2],&b[3],&b[4]};
    p = a; //此处编译器进行了隐式转换!内存发生了”有效截断“
    printf("%x, %x, %x\n", a, &a, &a[0]);
    printf("%d, %d, %d\n", sizeof(a), sizeof(&a), sizeof(&a[0]));
    printf("%d\n", **p);
 
    system("PAUSE");
    return 0;   
}
2010-07-27 15:41
zzyu220
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2010-7-2
收藏
得分:0 
*a[5]是指针数组。(*a)[5]是数组指针。
2010-07-27 22:17
快速回复:关于指向数组指指针的指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015036 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved