| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 969 人关注过本帖
标题:求。。高手讲解一下指针数组和数组指针吧。。。看了一天完全混乱了。。。
只看楼主 加入收藏
rapher
Rank: 2
等 级:论坛游民
帖 子:36
专家分:10
注 册:2011-5-27
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:8 
求。。高手讲解一下指针数组和数组指针吧。。。看了一天完全混乱了。。。
有木有高手能够给讲解一下。。顺便给一个指针数组和数组指针分别得作用和用法。。

我讲讲我的看法。请大侠帮忙纠正。。
我现在理解的指针数组是,定义的一个指针数组。这个指针数组里面的每一个元素都是一个指针。这每一个指针都指向另一数组每一个元素的地址:
int a[4]={1,2,3,4};*p[4]={a,a+1,a+2,a+3};
也就是说:
p[0]=a;
p[1]=a+1;
p[2]=a+2;
p[3]=a+3;
那么。。。它和下面的区别在哪呢?:
int a[4],*p;
p=a;        /*那么p+1=a+1,p+2=a+2,p+3=a+3....这样对吧?指针数组也是对原数组的地址操作。而这一个结构岂不是也一样吗?*/


然后 是 数组指针。。我完全看不懂了。。。。
书上定义是
(*p)[10]  /*p指向一个10元的一维数组。/

有木有大侠给一个通俗易懂的例子是用来运用 指针数组和数组指针 的。。。。。。。

求拯救!!!
搜索更多相关主题的帖子: 元素 
2011-05-29 16:33
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:1 
int a[4],*p;
p=a;//这个表达式的意思是指针p指向数组a[4]的第一个元素的地址,特就是a[0]的地址。

。。。!!!)))000
2011-05-29 17:17
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:1 
程序代码:
int * p1 = (int *)0xB0000000;
printf("p1 + 1 = %p\n", p1 + 1);                // 我这台本本是32位的,所以int为4字节,所以这里就输出0xB0000004
int (*p2)[1] = (int (*)[1])0xB0000000;     
printf("p2 + 1 = %p\n", p2 + 1);            // int (*)[1] 和 int * 是一样的,因为都指向一个整形,所以这里输出也是0xB0000004
int (*p3)[10] = (int (*)[10])0xB0000000;   
printf("p3 + 1 = %p\n", p3 + 1);            // int (*)[10] 它指向包含10个整形大小的空间,所以 p3 + 1 = p3 + sizeof(int) * 10; 这里输出0xB0000028


[ 本帖最后由 lz1091914999 于 2011-5-29 17:28 编辑 ]

My life is brilliant
2011-05-29 17:26
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

这个也给你。

My life is brilliant
2011-05-29 17:32
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:1 
楼上犀利 这个例子不错  指向数组的指针

只想整形的指针和指向只有一个元素的整形数组的指针是不一样的

int * 和 int (*)[1]的关系

                                         
===========深入<----------------->浅出============
2011-05-29 21:00
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:1 
其实我觉得啊 指针数组就是一个一维数组 其每一个元素都是指针变量,而数组指针就是一个指针指向这个一维数组的例如指针数组
int *p[10]其表示p[0] p[1]....p[9]九个指针指向整型的    而(*p)[10]表示p是一个指针而不是有像前面的十个指针 这个指针代表这个数组的手元素地址
我也是初学 不知道这样理解 过否
2011-05-29 22:26
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:1 
看不懂。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-29 23:20
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:1 
回复 楼主 rapher
http://blog168.

《狂人C:程序员入门必备》
2011-05-30 00:44
淡定是罪
Rank: 2
等 级:论坛游民
帖 子:44
专家分:28
注 册:2011-3-23
收藏
得分:1 
看不懂!!!!!!!!!!!
2011-05-30 08:16
快速回复:求。。高手讲解一下指针数组和数组指针吧。。。看了一天完全混乱了。。 ...
数据加载中...
 
   



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

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