免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: unistd
打印 上一主题 下一主题

严重声明:C语言中不存在数组的类型!它仅仅是一个概念! [复制链接]

论坛徽章:
0
111 [报告]
发表于 2009-12-22 10:55 |只看该作者
原帖由 liuty2006 于 2009-12-22 10:50 发表
对你这样的什么都清楚的大牛,自然可以忽略此贴。
而对于我这样的初学者,还是收益多多:)

汗 。。。。。

论坛徽章:
0
112 [报告]
发表于 2009-12-22 11:04 |只看该作者
哈哈 有意思

论坛徽章:
0
113 [报告]
发表于 2009-12-22 11:37 |只看该作者
我也来凑凑热闹,技术领域上的争论挺有趣的.
char arr[10] 与 char *p 在sizeof()操作下有争论。现在我把问题放大一下,二维数组时会怎样呢?如:char arr2[4][10] ;与
二维数组变量 arr2 相对应的 指针 char (*p2)[10] ; 在说到 p2 的类型时,称其为 是一个指向含有10个char元素的一维数组
的指针(类型),在这个时候,一维数组 的存在我认为是不能被别的类型替代的,大家看看这种说法有问题么?
ps: 就是说,这时的一维数组(类型)不能被指针(类型)替代了

[ 本帖最后由 gammareal 于 2009-12-22 11:44 编辑 ]

论坛徽章:
0
114 [报告]
发表于 2009-12-22 11:43 |只看该作者
有或没有,只是理解的问题

论坛徽章:
0
115 [报告]
发表于 2009-12-22 12:44 |只看该作者
数组就是一个地址常量,对数组取地址 == 这个数组本身的地址;类似还有函数(不是函数指针)。

int a[10];
a == &a;


int fun (void)
{
    return 0;
}

int (*fp) (void);

fp = &fun 跟 fp = fun 是等价的

论坛徽章:
0
116 [报告]
发表于 2009-12-22 13:07 |只看该作者
原帖由 gammareal 于 2009-12-22 11:37 发表
我也来凑凑热闹,技术领域上的争论挺有趣的.
char arr[10] 与 char *p 在sizeof()操作下有争论。现在我把问题放大一下,二维数组时会怎样呢?如:char arr2[4][10] ;与
二维数组变量 arr2 相对应的 指针 ch ...


arr2是char**类型,元素是char*类型。
所以在C语言里,char的一维数组就是char*类型的别名,char的二维数组就是char**类型的别名

[ 本帖最后由 论坛热点 于 2009-12-22 13:31 编辑 ]

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
117 [报告]
发表于 2009-12-22 13:18 |只看该作者
原帖由 论坛热点 于 2009-12-22 13:07 发表


arr2是char**类型,元素是char*类型。
所以在C语言里,一维数组就是char*类型的别名,二维数组就是char**类型的别名



二维数组就是char**类型的别名,那这个是什么 char*  p_ch[10]。

论坛徽章:
0
118 [报告]
发表于 2009-12-22 13:28 |只看该作者
原帖由 zhujiang73 于 2009-12-22 13:18 发表



二维数组就是char**类型的别名,那这个是什么 char*  p_ch[10]。


当然p_ch是char**类型

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
119 [报告]
发表于 2009-12-22 13:32 |只看该作者
原帖由 论坛热点 于 2009-12-22 13:28 发表


当然p_ch是char**类型


那  char* p_ch[10]  和  char  p_ch[10][10]  一样吗?

论坛徽章:
0
120 [报告]
发表于 2009-12-22 13:34 |只看该作者
原帖由 zhujiang73 于 2009-12-22 13:32 发表


那  char* p_ch[10]  和  char  p_ch[10][10]  一样吗?

char   a[5]  和  char  a[10]  是不是一样的?

[ 本帖最后由 论坛热点 于 2009-12-22 13:42 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP