将一个结构复制到另一个结构和更改一个结构的效果

时间:2013-06-14 20:56:51

标签: c++ c data-structures structure

#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 %s\n",X.a,X.p);
    printf("%d %s\n",Y.a,Y.p);
    return 0;
}

在这个问题中,结构X有“a = 5”和“P指向亚当”。然后将其复制到另一个结构Y.并对Y进行更改。 但是当strcpy(Y.p,t)完成时。

输出是:

5 Jack
10 Jack

这种变化应该仅在Y中,但这些变化也反映在X.怎么样?

我的问题是“在复制时,如何更改一个结构成员对另一个结构成员有影响”?

3 个答案:

答案 0 :(得分:5)

strcpy(Y.p,t);

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

相同
strcpy(s, t);

答案 1 :(得分:5)

您已将Y初始化为X的副本。这意味着它在p字段中包含相同的指针 - 您永远不会更改它。

当您执行strcpy时,您正在撰写t超越s的内容。

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

答案 2 :(得分:4)

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

所以strcpy改变了X和Y的数据