*(int *)变量=值是什么意思?

罗杰·科斯特洛

我正在阅读在线书《使用ANSCI-C进行面向对象的编程》

第6页显示的实现set有一个带有add()两个参数函数:aset和an elementelement添加到中set该实现使用一个指针数组:

static int heap [MANY];

这是add()函数的开头

void * add (void * _set, const void * _element)
{ 
    int * set = _set;
    const int * element = _element;

    if (* element == MANY)
        * (int *) element = set — heap;

这是最后一行:

* (int *) element = set — heap;

我不明白。似乎右侧正在减去指针,对吗?减去指针是否常见?在左侧,似乎(int *)正在强制转换element为“指向int的指针”,对吗?开头的星星似乎表明“所指事物的价值”,对吗?

对不起,我迷路了。代码在说什么?

更新(基于回答的问题)

感谢您的出色回应!

我对此表达式有一个后续问题: set - heap

heap是数组的名称。set在细胞中的一个heap,比方说,heap[2]因此,表达式是从减去指针到heap的指针heap[2],对吗?我使用了一个printf()语句来输出heap和输出set,这是它的输出:

heap = 4227136
set  = 4227140

因此,set - heap等于4这是否意味着set指向heap[4](即,4从数组开头的单元格开始)?是否heap[i+1]始终保证1指向的指针大于指向的指针heap[i]

element执行此语句后,我输出的值

* (int *) element = set — heap;

正如刚才讨论的价值set - heap4输出表示的值element就是1怎么会是这样,不应该的价值element4

聚丙烯

由于*elementconst int,因此无法直接分配。

所以演员

    * (int *) element = set — heap;

转换elementint *,然后解除引用,然后分配的结果set - heap

但是,这仅在以下情况下有效:

  • _element指向的原始对象是可修改的对象。否则,丢弃const行为是不确定的。
  • 指向一个int对象。

是的,set - heap要减去两个指针。但这可能是无效的,因为:

  • 减去两个指针的结果将得出a ptrdiff_t,该a可能适合或可能不适合某种int类型。

  • 仅当两个指针指向同一个数组对象或指向数组对象的最后一个元素之后,该减法才有效。参见6.5.6加法运算符/ 9

总之,该代码可以解决您的问题。但是它需要满足上述条件才有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

'int border = borderType & ~BORDER_ISOLATED' 变量是什么意思?

来自分类Dev

*(int *)a是什么意思?

来自分类Dev

<变量,变量>是什么意思?

来自分类Dev

{}在检查变量时是什么意思?

来自分类Dev

变量=自我是什么意思?

来自分类Dev

“功能” == typeof变量是什么意思?

来自分类Dev

括号中的变量是什么意思?

来自分类Dev

(int [] [])的方法是什么意思?

来自分类Dev

“ this [int index]”是什么意思?

来自分类Dev

*(int *)在C ++中是什么意思?

来自分类Dev

(int *)&var是什么意思?

来自分类Dev

*(int *)(buffer)是什么意思?

来自分类Dev

使用(int [] [])的方法是什么意思?

来自分类Dev

*((int *)(&val)+1)是什么意思

来自分类Dev

无变量的变量在TypeScript类中是什么意思?

来自分类Dev

将int转换为24位值是什么意思?

来自分类Dev

类型((Int)-> Int)在Swift中是什么意思?

来自分类Dev

c中的`int(*)(int)`关于类型是什么意思?

来自分类Dev

什么是“后续读”在volatile变量的背景是什么意思?

来自分类Dev

变量初始化是什么意思

来自分类Dev

变量为“有效最终”是什么意思?

来自分类Dev

__PYVENV_LAUNCHER__环境变量是什么意思?

来自分类Dev

隐藏局部变量是什么意思?

来自分类Dev

销毁函数中的局部变量是什么意思

来自分类Dev

javascript中的单个变量行是什么意思?

来自分类Dev

批处理设置变量=%variable:〜1%是什么意思

来自分类Dev

“变量'X'可以设为常量”,'constant'是什么意思?

来自分类Dev

init()中变量之前的词是什么意思?

来自分类Dev

Shell脚本中变量前的“#”是什么意思?

Related 相关文章

热门标签

归档