当前位置:   article > 正文

C++BUG: [Error] invalid array assignment

invalid array assignment

1. Introduction

在使用数组给数组赋值时,会出现以上bug。大致的栗子如下:

while(!student.eof()){
        SS[j].name=stud.name;//报错!
        SS[j].ID=stud.ID;
        SS[j].score=stud.score;
        j++;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

目的是将数据存储到结构体数组对象SS[j]中,但是这样赋值会报错。

2. memcpy()

函数原型

void *memcpy(void*dest, const void *src, size_t n);
  • 1

功能

由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。

头文件

C语言中使用#include <string.h>;

C++中使用#include <cstring>和#include <string.h>都可以

返回值

函数返回指向dest的指针。

与strcpy的区别

1.与strcpy相比,memcpy并不是遇到’\0’就结束,而是一定会拷贝完n个字节。因此需要格外注意内存溢出。
2.memcpy用来做内存拷贝,可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;注意,source和destin都不一定是数组,任意的可读写的空间均可;
然而,strcpy就只能拷贝字符串了,它遇到’\0’就结束拷贝。

实例

  • 用于二维数组
int main(void)
{
    int src[][3]={{1,2,3},{4,5,6},{7,8,9},{1,2,3},{4,5,6},{7,8,9}};  
    int des[6][3]={0};//要小心,行数固定
    memcpy(des,src,sizeof(src)); //小心内存溢出
    return 1;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/153492
推荐阅读
相关标签
  

闽ICP备14008679号