| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6780 人关注过本帖
标题:指针的基类型是什么?
取消只看楼主 加入收藏
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
指针的基类型是什么?
问题:下面的循环是对数组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
快速回复:指针的基类型是什么?
数据加载中...
 
   



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

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