| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6780 人关注过本帖
标题:指针的基类型是什么?
只看楼主 加入收藏
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
指针的基类型是什么?
问题:下面的循环是对数组a的第i列清零
int a[NUM_ROWS] [NUM_COLS],    (*P)  [NUM_COLS];
...
for  (p= &a[0]; p<&a[NUM_ROWS]; P++)
    (*P) [i]  =  0;

书上说这里讲p声明为指向长度为NUM_COLS 的整形数组的指针,我想问下,这个指针和普通的指针有区别嘛?有的话是声明区别,没有的话那为什么p++就把p移到了下一行呢?大写字母里面的是定义好的宏,不重要。

这个问题已经有答案了,但是答案我都看不懂
我们这么理解。
int *p;
p++ 就是将p向下移动4个字节。

cha* p;
p++ 就是将p移动一个字节。

反正就是p++就是将p移动p指向的内容所占的内存大小。

你可以看到例子中,p指向的内容占了一行所需的内容,所以p++就指向下一行了。//p指向的内容占了一行所需的内容是什么意思?

虽然看不懂答案,但是我继续百度,又发现了下面这些东西:
因此,对于二维数组,象a[0]++这样的表达式是非法的。若有表达式a[0]+1,表达式中1的单位应当是2个字节。在以上定义中,指针变量p的基类型与a[i](0≤i<3)相同,因此,赋值语句p=a[i];是合法的。我们已知a[i]也可以写成:*(a+i),故以上赋值语句也可写成:p=*(a+i);。

我感觉到这里提到的基类型可能是上面问题的答案。但是,指针的基类型到底是什么东西?我搜索了一下,完全搜不到一点资料。
搜索更多相关主题的帖子: 字母 
2014-09-11 20:09
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:6 
我记得谭浩强书里面这个部分有个配图 用行指针来解释这个 我建议你看看书

要知道 指针变量里放的是地址 不同的指针变量 区别除了里面的值也就是地址不一样 还有就是类型不一样 最明显的表现就是自增后变化的大小

指针变量p的基类型与a[i](0≤i<3)相同

这里p是一个二级指针 配图里面用箭头指向一行来表示罢 形象的说 这里p指向的是二维数组里面的某一行 而不是指向某一个具体数据
2014-09-11 21:03
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:7 
楼主应该有个很基本的常识就是,计算机中是不存在二组数组的。

在郝斌的视频中有相关的一个说明:多维数组是不存在的,因为所有的n维数组都可以看成由n-1维的数组组成的一维数组。

这样的话,二维数组a[M][N],可以看成是由M个含有N个元素的一维数组组成的一维数组.

对于指针变量p,如果定义int a[3][4],int *p;p=a;

那么p++=a[1]

如果p=&a[0],  那么p++=a[0][1].

在谭浩强的教材中,对于这个地方的解释是这样的:

假设有一个排,30名士兵,排成三行10列。规定排长管理到班,班长管理到具体的士兵,每个班有10名士兵。士兵编号按照数组的0起始来编号。

则排长和班长假设都在(0,0)号士兵处起步,那么班长每走一步,只跨过一个士兵,而排长每跨过一步则跨过了一个班。大致是这样的意思,具体的要远比这个详细,可以翻阅相关教材。

代码测试环境:  WinXP+C-Free5.0.
2014-09-11 21:47
Coincedence4
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:52
专家分:151
注 册:2014-9-4
收藏
得分:7 
3楼正解,数组指针和普通指针在于数组指针指向的是多个对象(也可以类似理解为多个对象组成的单个对象),而普通指针指的是单个对象。类似与班级和个人的关系。
2014-09-11 22:11
快速回复:指针的基类型是什么?
数据加载中...
 
   



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

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