将一个结构复制到另一个结构以及改变一个结构对另一个结构的影响
Copying one structure to another and Effect of changing one on Another
#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的数据
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么将一个结构的引用设置为等于另一个结构只会更改一个数据成员?
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 如何将一个结构的字符数组复制到结构的另一个字符数组中?
- 如何将数据从一个结构链接到另一个结构
- 是否可以使用智能指针成员设置具有另一个结构的结构?
- std::transform 将一个结构数组复制到另一个结构数组
- C++将结构复制到另一个程序的资源
- 结构新手,我对如何从 void 函数中返回值并将其放入另一个函数感到困惑
- 可以访问一个类中的播放器结构,但不能访问另一个类中的播放器结构
- 如何在另一个结构中初始化结构数组?
- 在另一个结构中声明内部结构会导致错误:结构使用无效
- 通过 C++ 中的另一个结构成员访问结构
- 难以从另一个结构中的函数返回结构
- 有没有办法将一个对象注入到另一个对象的结构中?
- 如何制作一个结构程序,在其中可以存储无限量的数据,以便每次您想要时都可以将另一个产品添加到列表中?
- 将一个结构的值复制到另一个结构
- 结构C++可以用 0 初始化,但不能用另一个 int 初始化
- 如何将矢量结构从一个标头文件传递到另一个标头文件中的类
- 是否可以定义一个在外部"C"块中继承另一个结构的结构?