【发布时间】:2013-06-14 20:56:51
【问题描述】:
#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 中。怎么会这样?
我的问题是“在复制一个结构成员时,更改一个结构成员对另一个结构成员有何影响”?
【问题讨论】:
-
嗯,我认为这是个好问题。
-
嗯,他们都指向同一个东西,然后你通过
strcpying 来改变同一个东西。 -
甚至大约 37,000 多名用户对此感到困惑 :)
标签: c++ c data-structures structure