c语言,memcpy内存拷贝和=直接赋值有什么区别,或者说需要注意的地方

c语言,memcpy内存拷贝和=直接赋值有什么区别,或者说需要注意的地方。
当然除了c语言,熟悉别的语言也可以详解下。

C语言感觉没什么大区别,只要对内存结果确实比较熟悉。赋值符号会做一些语法判断,类型转换之类的操作,如果对数据内存结果很熟悉的话,个人感觉一些地方通用应该问题不大。当然能用赋值尽量用赋值吧。

只有单个类型,结构体等可以用=,数组就只能用memcpy了。

memcpy会执行数据复制,而赋值语句只是简单将一个指针的值传给另一个指针,指针对应的存储空间的内容并不会改变。

很多时候硬件会对memcpy做优化,速度会比直接赋值要快

一图胜千言

memcyp

图解

"="操作一般不会分配内存(在声明初始化时会分配),memcpy()函数的字面意思就是内存拷贝,把一块内存中的数据拷贝给另一块内存,这个过程中有新的内存分配了。

memcpy从名字上也可以理解出来是把内存拷贝,也就是说把一个内存里面的东西拷贝到另一个内存中。而赋值就不一定了,比如两个声明为整形变量的变量,赋值就是跟memcopy一样,但一个是整形指针一个是整形变量有不一样了,赋值也只能把地址赋给指针,不是把内存里面的数据给它。个人观点就是如果数据类型一样可以叫做拷贝吧,不一样的数据类型的解释方法不一样。