C语言 结构复制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 结构复制相关的知识,希望对你有一定的参考价值。
定义一个结构 typedef struct SA int arr[10];S;
定义两个变量 S a=1,2,3,b=a;
想问a是怎样复制给b的,是将a.arr[]中的每个元素复制给b.arr[]的每个元素,还是将a.arr[]的首地址复制给b.arr[]的首地址。 给出依据,比如哪本书或哪篇网络文章等。 不懂的请不要随便回答。
其实我一开始就知道是将a.arr[]中所有元素的值复制给b.arr[]的所有元素。 我想问的的是:下面的函数定义方式是正确的而且是可行的对么? S y()……;
而且把结构体定义中的int arr[10]改为char arr[10]或其他类型也是可以的对吧。 这样的话就可以返回任何数组了,虽然我知道返回整体数组效率不高。
S a=1,2,3,*b=&a;
这个时候你定义的b是一个指向结构体的指针,现在把它初始化为指向a,那么这个时候是将a的地址也就是a.arr[]的地址赋值给了b。
S y()……; 这样是可以的,函数你要返回一个值,这个值是已经定义的结果或者是系统里面有的就可以的,这里你的函数y返回的是一个结构体,这个当然是可以的了
另外,你那么的改当然也是可以的了,结构体是你定义的,你可以改成任何的类型,只要不出现语法错误,可以的呀~~~,你返回什么那是函数里面要实现的功能,看你怎么实现了,和定义是没有必然的直接的联系的~~~ 参考技术A 当然是复制每个元素啦!
b又不是个指针变量!
参考资料:好像这种复制大数组的方法也是我告诉你的吧?!
C中结构体内有一个成员是二维数组,可以直接赋值另一个一维数组吗?
randomTeam是前面随机生成数
closureLNK closure_link里index成员是整型,这里我说错了
而是要逐项赋值
或者用memcpy整体赋值。
你的这个代码 就是逐项赋值的 参考技术C 1.如果这个结构体没有指针成员的话,可以直接用“=”号赋值(目前主流的编译器都支持这样的赋值,如果是特别老旧的编译器可能不支持这样,那就要把每个成员分别赋值了 如果有指针成员,那么这个指针成员不能简单的赋值 参考技术D 如果对内存熟悉的话可以直接拷贝内存
memcpy来进行数组复制。追问
这样写合乎语法吗?
以上是关于C语言 结构复制的主要内容,如果未能解决你的问题,请参考以下文章