c – 将指向单个值的指针用作Array
(注意,问题已扩展为“注册”变量)
我的问题简而言之:这是合法的C代码(对于不同的ISO 9899 C标准的标准字母 – 理想情况下是标准中的“证明”): int a = 0; int b = (&a)[0]; const int c = 0; b = (&c)[0]; 问题扩展: /* Question extension */ register int d = 0; int e = (&d)[0]; 背景: 我有一组数组表示结构化对象集合的属性 – 对于每个属性一个数组.因此,数组是此结构化集合的线性化.这些属性数组元素都与不同的值进行比较,具体取决于结构化集合中对象的位置.这些值的结构也与集合结构相关:-) 所以我写了一个宏,迭代所有的attributs(给定任何属性数组)并提供可以用作比较值数组的数组索引的动态结构信息.这个宏有输入: 所以你可以这样说: COMP_ALL(attr1Arr,<=,limitbyCath1Arr,cath1Idx,anyLimitFault) 在深度循环的某个地方,线性化不同的类别,你会发现一个比较,如: anyLimitFault = anyLimitFault && (attr1Arr[objCounter] <= limitbyCath1Arr[cath1Idx]); 现在有时只有一个限制值,所以我想写: int limit = -1; COMP_ALL(attr4Arr,(&limit),anyLimitFault); 我当然可以这样做: int limit = -1; int temp[1]; temp[0] = limit; COMP_ALL(attr4Arr,temp,anyLimitFault); 但我更喜欢另一种方式,所以我可以加入: COMP_ALL2Value(attr_arr,pred,val,collector) COMP_ALL(attr_arr,(&val),collector) 解决方法
是.您的示例中的& a可以被视为指向单元素数组的第一个元素的指针.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |