首页IT科技C语言指针转置m×n(C语言学习趣事_关于指针转换)

C语言指针转置m×n(C语言学习趣事_关于指针转换)

时间2025-09-17 19:51:12分类IT科技浏览8759
导读:今天在Gmail的群组讨论贴中看到这样一个帖子: [learn-linux-c-cpp] 一维数组转成指向数组的指针 收件箱...

今天在Gmail的群组讨论贴中看到这样一个帖子:

[learn-linux-c-cpp] 一维数组转成指向数组的指针 收件箱 x zhangzhe benzhemin@gmail.com 11-10-28 发送至 learning-linux. 还请大家讨论一下: 代码: #include <stdio.h> int main(void){ int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int (*p)[2] = (int (*)[2])a; printf("%d\n", **p); printf("%d\n", **(p+1)); printf("%d\n", *a); return 0; } a只是一个指针                 ,为何转成int (*)[2]之后转成了二维指针? 事实上下面代码也可以编译运行通过                。 #include <stdio.h> int main(void){ int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int (*p)[2] = (int (*)[2])&a; printf("%d\n", **p); printf("%d\n", **(p+1)); printf("%d\n", *a); return 0; } 难倒 int (*p)[2] = (int (*)[2])a; 和 int (*p)[2] = (int (*)[2])&a;两种转换是等价的吗                          。

   这里明显可以看到这位网友对概念的混淆                         ,如下的描述         。

a只是一个指针         ,为何转成int (*)[2]之后转成了二维指针?

我们知道在C语言中        ,数组名是一个常量                         ,就是常说的const量                 ,经过上面的变化        ,a并没有变成int (*)[2]这样的指针类型                         ,它还是保持

原来的属性;只不过是p是int (*)[2]这样的一个指针类型                 ,并且被用户强制指向了a这个地址                。这就是说如果用指针p访问的话,那么可以将a地址开始的

10个整数解释成二维数组                         。

还有就是下面的这个描述:

难倒 int (*p)[2] = (int (*)[2])a; 和 int (*p)[2] = (int (*)[2])&a;两种转换是等价的吗         。

上面的这两个描述是一致的                         , 因为在解析的时候: a 和 &a 的实质是一样的                         ,都是指向内存中固定的区域;因此两种转换是等价的        。

这里不多说了,欢迎园子里的大侠们                 ,对这个问题进行讨论                         。

以上只是我个人的观点                         ,如有不当         ,请大家拍砖.........................

声明:本站所有文章                 ,如无特殊说明或标注                         ,均为本站原创发布                 。任何个人或组织         ,在未征得本站同意时        ,禁止复制                、盗用                          、采集         、发布本站内容到任何网站                、书籍等各类媒体平台        。如若本站内容侵犯了原著者的合法权益                         ,可联系我们进行处理                         。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
帝国cms演示(帝国CMS实时:打造您的网站之王) sortable el-table(sortablejs的使用实践)