为什么我不能做*值++; 将一个增加到该内存位置的值?

 翔溢_142 发布于 2023-02-13 11:17

我明白,为了它的工作,它需要

void increment(int *value)
{
    (*value)++;
}

这是因为它需要括号,因为优先级如何工作(如果我错了,请纠正我).但是,当我执行以下操作时,怎么没有发生编译错误?由于没有括号,因此没有改变预期的值,但这究竟是什么变化?

void increment(int *value)
{
    *value++;
}

kvanberendon.. 7

value是一个指向整数的指针.指针算法的规则说如果你做一个类似的操作value++,那么它将指向value + sizeof(int)(以字节为单位).

这里发生的事情是你将取消引用你value得到的一些你扔掉的rvalue,然后递增value(不是它指向的东西,而是指针本身).

1 个回答
  • value是一个指向整数的指针.指针算法的规则说如果你做一个类似的操作value++,那么它将指向value + sizeof(int)(以字节为单位).

    这里发生的事情是你将取消引用你value得到的一些你扔掉的rvalue,然后递增value(不是它指向的东西,而是指针本身).

    2023-02-13 11:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有