• 欢迎访问我的博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 本网站关闭了评论功能,联系请点击→邮箱
  • Ctrl+D 可快捷收藏本站点

C/C++两个数组之间可以直接赋值吗?

C/C++ gql 4年前 (2021-03-30) 1127次浏览

想屁吃呢,当然不可以!

但是我们可以通过其他的途径实现,首先我们知道结构体是可以直接赋值操作的(可以去看编译好的汇编代码,其中结构体赋值采用是类似于memcpy这种形式,而不是逐个字段的拷贝。)不管是简单的数据类型如int、float等或者数组、指针、结构体等这些复杂数据类型,只要两个结构体类型相同,就可以实现赋值。但是值得注意的是,结构体在赋值的时候只是简单的浅拷贝,如果结构体内部出现了指针,假设有

struct A{
    int k;
    int *pk;
}a1,a2;

这个时候初始化a1后,使用a2=a1,a2和a1中pk指针都会指向我们申请的同一块内存区域,假设这个时候释放了a1的pk指针的内存,那么a2的pk指针就变成了了野指针。

https://zhuanlan.zhihu.com/p/144221994

数组相比于结构板就如同二等公民一般:

  • 不能直接赋值
  • 数组作为一个函数的参数传递时,退化成一个指针,结构体可以作为函数参数
  • 数组不能作为函数的返回值,但是结构体可以

 

插句嘴:在C++中引入了允许用户重载结构体赋值操作运算


如未注明 , 均为原创。转载请注明原文链接:C/C++两个数组之间可以直接赋值吗?
喜欢 (1)