gpt4 book ai didi

将一个指针内容复制到另一个

转载 作者:太空狗 更新时间:2023-10-29 16:46:08 25 4
gpt4 key购买 nike

我想我在某处读到过,当使用指针时,我们想将一个指针的内容复制到另一个,有两种选择:

  • 使用 memcpy 或
  • 只是用 = 给它们赋值?

但是在下面的示例中,我只是通过为两个指针分配内存,然后分配第二个指针,首先更改..但是我的第二个指针的条目也在更改..我做错了什么来测试它:/。

typedef struct {

int a;
int b;
int c;
} my_struct;


int main(int argc, char** argv) {

my_struct* first = malloc(sizeof(my_struct));
first->a = 100; first->b = 101; first->c = 1000;

my_struct* bb = malloc(sizeof(my_struct));

printf("first %d %d %d\n", first->a, first->b, first->c);
bb = first;
printf("second %d %d %d\n", bb->a, first->b, bb->c);


first->a = 55; first->b = 55; first->c = 89;
printf("second %d %d %d\n", bb->a, first->b, bb->c);
}

最佳答案

当你执行 bb = first; 时,bbfirst 指向相同的内存位置。 first->a = 55;首先-> b = 55; first->c = 89; 将更改该位置的 abc 的值。 first 的原始值仍在内存中徘徊,但无法再访问它。

我认为您可能想要做的是 *bb = *first;

关于将一个指针内容复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938648/

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