gpt4 book ai didi

c - 指针: difference between * and (int *) in given context

转载 作者:行者123 更新时间:2023-11-30 21:30:40 25 4
gpt4 key购买 nike

int ar[3][3]={{1,2,3},{4,5,6},{7,8,9}};

statment1: int k=(int *)((int *)(ar+1)+2);
statment2: int l=*(*(ar+1)+2);
statement3 int *p = (int *)a +1;

Statement1 无法编译。Statement2 和 Statement3 编译。现在,考虑到数组是整数类型,我无法弄清楚如果我使用 (int *) 而不是 * 会有什么区别。

最佳答案

您对解引用运算符 * 和强制转换操作 (int *) 感到困惑,并且您的第一行应该响亮:

int k = (int *)bar;

您尝试影响 int 变量中的地址(指向 int 的指针)。

第二个是可以的,因为您使用 * 两次来获取二维数组中的值。第三个也可以,因为您的容器 int * p 具有获取地址的正确类型(并且您仅取消引用“一维”。

我希望它足够清楚,无论如何你可以看看这个Wikipedia关于解引用运算符的文章。

关于c - 指针: difference between * and (int *) in given context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24646503/

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