gpt4 book ai didi

c - 为已初始化的指针赋值

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

当我们声明一个指针时,我们通常会将其初始化为一个变量(内存映射),然后为其赋值。

#include <stdio.h>

int i=0;

int cir_shift(int *x,int *y);

int main()
{
int a,b,c,*temp,*d;

d=&c;

scanf("%d %d %d",&a,&b,&c);
temp=(d+3);
*temp=c;

cir_shift(d,temp);
printf("%d %d %d",a,b,c);
}

int cir_shift(int *x,int *y)
{
*x=*(x+1);
i++;
if(i==3)
{
return 0;
}
else
{
x++;
cir_shift(x,y);
}
}

这里,当我想打印 temp (*temp) 的值时,它一直崩溃。我确实将“temp”初始化为内存地址,但它仍然崩溃。而且,当我想打印 temp 存储的内存地址时,它会打印 temp (*temp) 处的值。问题似乎是什么?解决方案可能是什么?谢谢。

最佳答案

 temp=(d+3);
*temp=c;

d + 3 表示 d 指向的位置之后的 3 int。这是一个无效地址,因为您没有在那里分配任何内容。因此,尝试写入 *temp 会释放您的实现的无限报复。

您应该解释一下您想要通过 temp=(d+3); 实现什么目的?

关于c - 为已初始化的指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25043262/

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