gpt4 book ai didi

带指针的C题

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:56 24 4
gpt4 key购买 nike

我有一个程序问题,这是代码。

int main()
{
int *p,*q;
p=(int*)1000;
printf("%d ",p);
q=(int*)2000;
printf("%d",q);
printf("%d",(p-q));
return 0;
}

但是答案来了

1000 
2000
-250

我无法理解 p-q 发生了什么,为什么答案是 -250

最佳答案

正确但可能无用的答案:p - q 等于 (1000 - 2000)/(sizeof int)。对于大多数 C 编译,sizeof int 是 4。

可能更有用的答案:像 (int*) 1000 这样的类型转换的效果是未定义的。该代码创建了一个指向 int 地址 1000 的指针。该地址可能无效。要创建一个指向值为 1000 的 int 的指针,请这样写:

int i = 1000;
int *p = &i;

现在p指向i,而*pp指向的值是1000 .

下面是一些正确的代码,可以表达您的意思:

int main() {
int i = 1000;
int j = 2000;

int *p = &i;
int *q = &j;

printf("i = %d *p = %d\n", i, *p);
printf("j = %d *q = %d\n", j, *q);
printf("*p - *q = %d\n", *p - *q);
}

关于带指针的C题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11748249/

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