gpt4 book ai didi

c++ - 你怎么解释 *(y_ptr)&val;

转载 作者:行者123 更新时间:2023-11-30 01:09:46 26 4
gpt4 key购买 nike

问题描述

在下面的示例中,我编写了 *x_ptr = *(y_ptr)&val; 我不明白为什么输出是 10。内存中发生了什么?我无法理解这种组合。

// Example program
#include <iostream>
#include <string>

int main()
{
int *x_ptr, *y_ptr;
int val = 10;
y_ptr = &val;
*x_ptr = *(y_ptr)&val;

std::cout << *x_ptr << std::endl;
}

假设我将 *x_ptr = *(y_ptr)&val 更改为 x_ptr = *(y_ptr)&val 编译器会给出以下错误,为什么?

10:20: error: invalid conversion from 'int' to 'int*' [-fpermissive]

最佳答案

输出是 10,因为任何数字与自身的位与运算都保持不变。

表达式的作用很简单:它取消引用指向 valy_ptr,然后将结果与相同的 val 按位与运算.

注意:您需要将 x_ptr 初始化到某个位置,以避免因取消引用未初始化的指针而导致潜在的崩溃。

关于c++ - 你怎么解释 *(y_ptr)&val;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39502259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com