c – 指向数组声明的指针
考虑以下情况:
1. extern int *a; int *a = new int(1); //OK 2. extern int a[]; int a[5]; //Ok 3. extern int (*a)[]; int (*a)[5]; //error: redefinition of 'a' with a different type: 'int (*)[5]' vs 'int (*)[]' 你能解释为什么第三种情况会抛出编译时错误吗?前两次究竟是什么?我正在寻找相应的标准参考. 解决方法
简而言之:
第三种情况是不同的,因为,指针变量的类型不匹配 – extern声明指向具有未知大小(不完整类型)的int数组的指针,并且定义是针对相同的变量,但是作为指向数组的指针5个整数,根据标准是不同(有效)类型. 详细: 第一种情况是明确的: 第二种情况:
我相信这意味着带有下标的数组的定义将变量的先前声明完成为具有未知大小(无下标)的数组 – 这就是场景2中发生的情况. 第三种情况: [重读标准后编辑回答] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 安装oracle11g client 【INS-30131】执行安装程序验证所需的
- Swift显示alert和promp confirmation
- ruby – 命名约定:为什么Array#delete最后没有感叹号?
- Cocos2d-x 3.2 onEnter与onEnterTransitionDidFinish的区别
- 【第2章第255回】这20个正则表达式,让你少写1,000行代码
- nosql介绍、memrcached介绍、安装memcached、查看memcached
- vb.net机房收费系统——存储过程
- xslt如何生成自增变量
- Flex回调函数
- 正则表达式 – 用于描述信用卡到期(有效期)日期的正则表达式