在C语言中。结构体变量之间可以相互赋值吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C语言中。结构体变量之间可以相互赋值吗?相关的知识,希望对你有一定的参考价值。

可以直接赋值。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。

C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。

举例:

voidmain()

STUstu1={0,10};

STUtemp={12,88};

STU*p1=&stu1;

STU*p2=&temp;

printf("%d-%d\n",temp.name,temp.num);

temp=stu1;

printf("%d-%d\n",temp.name,temp.num);

temp={10,10};

printf("%d-%d\n",stu1->name,stu1->num);

printf("%ld-\n",&stu1);

printf("%ld-\n",stu1);

printf("%ld-\n",&temp);

printf("%ld-\n",temp);

change(stu1,temp);

temp=stu1;

p2=p1;

printf("%d-%d\n",p2->name,p2->num);

扩展资料:

C语言中变量间互相赋值很常见,例如:

inta,b;

a=b;

结构体也是变量(自定义变量),两个结构体之间直接赋值按道理应该也是可以的吧,将一个结构体对象赋值给另一个结构体对象的。

例:

#include"stdio.h"

structtest

inta;

intb;

intc;

char*d;

};

intmain()

structtestt1={1,2,3,"tangquan"};

structtestt2={0,0,0,""};

printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);

t2=t1;

printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);

return0;

参考技术A 1、结构体变量是可以直接赋值的。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。
2、C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
参考技术B 可以的,同类型的结构体变量可以。比如:
struct test a,b;
a=b;//这样可以的。
如果是不同的类型,但是结构体没数据类型一样就要用memcpy拷贝内存(头文件string.h)。例如:
struct test1 a;本回答被提问者采纳

C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
所以,在C语言中两个相同类型的结构体变量之间是可以相互赋值的。但是要注意指针的浅层复制问题

下面是一个简单的验证代码:
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h> 
#include <stdlib.h>
struct test  
{  
    int a;  
    int b;  
    char ss[10];  
};  
  
struct test2
{
    int a;
    int b;
    char * ss;
};

int main()  
{  
    struct test t1 = {1, 2, "hello"};           
    struct test t2;  
    t2 = t1;  
    strcpy(t1.ss,"张汉青");
    printf("%d, %d, %s\n", t2.a, t2.b, t2.ss); 

    struct test2 t3;
    t3.ss = (char *)malloc(10);
    t3.a=1;
    t3.b=2;
    strcpy(t3.ss,"hello");
    struct test2 t4;
    t4=t3;
    strcpy(t3.ss,"张汉青");
    printf("%d,%d, %s\n",t4.a,t4.b,t4.ss);

    return 0;  
}  

 

希望对你有所帮助,如有不正确的地方,还请指教。。多谢~~

 

以上是关于在C语言中。结构体变量之间可以相互赋值吗?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

CString之间为啥不能互相赋值

c语言结构体能否整体赋值

C 语言结构体 ( 结构体变量之间的赋值 )

C语言中结构体变量之间赋值

C语言 NULL赋结构体指针变量