将一个结构复制到另一个结构以及改变一个结构对另一个结构的影响

Copying one structure to another and Effect of changing one on Another

本文关键字:结构 另一个 一个 影响 改变 复制      更新时间:2023-10-16
#include<stdio.h>
#include<string.h>
struct node
{
    int a;
    char *p;
};
int main()
{
    struct node X,Y;
    char s[5] = "Adam";
    char t[5] = "Jack";
    X.a = 5;
    X.p = s;
    Y = X;
    Y.a = 10;
    strcpy(Y.p,t);
    printf("%d %sn",X.a,X.p);
    printf("%d %sn",Y.a,Y.p);
    return 0;
}

在这个问题中,结构X有"a=5"answers"p指向Adam"。然后将其复制到另一个结构体Y中,并对Y进行更改。但是当strcpy(y, p,t)完成后。

输出为:

5 Jack
10 Jack

这个更改应该只在Y中发生,但是这些更改也反映在x中。

我的问题是"当一个结构成员被复制时,如何改变对另一个结构成员的影响"?

您将Y初始化为X的副本。这意味着它在p字段中包含相同的指针-您从未更改过。

当你做strcpy时,你把t的内容写在s的上面。

你很幸运你选了两个4个字母的名字

strcpy(Y.p,t);

Y.p的值与s的值相同。所以上面的函数调用实际上与

相同:
strcpy(s, t);

这是因为结构体X和Y 的字符指针p都指向相同的内存位置

so strucy改变X和Y的数据

相关文章: