数组指针与指针数组有什么不同?

tony0194 2000-11-05 05:52:00
我在一本书上见到有关于数组指针的声明方法
(* ptr)[10]
可以这样声明吗?
如果这样可以的话
它的基类型是什么?
如何使用?
...全文
201 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony0194 2000-11-07
  • 打赏
  • 举报
回复
Thanks Sunlet
果然好眼力,我也是计算机专业出身的,不过还没毕业.

I will give you the point.
Sunlet 2000-11-05
  • 打赏
  • 举报
回复
一看就知道你也是计算机专业出身的。
在C,C++中,数组名就是指针常量。但是它与其他的常量不同。
其它常量占有存储空间,只是不允许改变。数组名的值是在程序的代码的部分,而不是在数据的部分,不过使用起来和指针常量相同。
如果要类比以下的话,应该是更像define产生的东西。
书组的名称的值是书组的第一个元素的地址
这是我的一贯理解。
声明int (* ptr)[10] 与int *ptr[10]不一样,因为[]的优先级比*的高,所以ptr要先于[]结合,加上()以后就不同了。
tony0194 2000-11-05
  • 打赏
  • 举报
回复
to :tigerjade
请问
在我的机器上用bc3.0运行时
声明int (* ptr)[10] 与int *ptr[10]都一样
这两种方法是否完全相同?
还有, 对于数组名是否可以把它理解为一个指针常量
(像指针变量一样占有储存地址 只是不能被修改)
如: 对于a[10]来说 a有储存地址并且a的内容为数组的首地址
不知小弟的理解是否正确,请各位高手指教.

tony0194 2000-11-05
  • 打赏
  • 举报
回复
请问
在我的机器上用bc3.0运行时
声明int (* ptr)[10] 与int *ptr[10]都一样
这两种方法是否完全相同?
还有, 对于数组名是否可以把它理解为一个指针常量
(像指针变量一样占有储存地址 只是不能被修改)
如: 对于a[10]来说 a有储存地址并且a的内容为数组的首地址
不知小弟的理解是否正确,请各位高手指教.

tigerjade 2000-11-05
  • 打赏
  • 举报
回复
这就是声明一个指向带有10元素的数组的指针.在我刚开始学习C的时候曾经认为数组和指针是同一个概念.但是后来证明是错的.比如这样吧:
int a[10][10]
你就绝对不可能把a转成指针的指针.实际上在下面这个例子中:
int a[10];
*a = 1;
是进行了一次类型转换的.把数组转换成了指针.
而指针数组则是一组指针,每个指针可以指向不同的内存区,也可以指向相同的内存区,其内存的分配方式是与数组不同的.数组是一组固定的连续的大小相同的内存.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧