C++BUG: [Error] 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++;
    }

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

2. memcpy()

函数原型

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

功能

由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. 引用错误:请确保你正确引用了数组变量。检查一下你的代码中是否有其他地方对该数组进行了无效的赋值。 如果你能提供更多的代码片段或错误信息,我可以给出更具体的帮助。 #### 引用[.reference_title] - *1* *3* [vue 使用 eslint 报错 [vue/no-parsing-error] Parsing error: x-invalid-end-tag.](https://blog.csdn.net/sansan_7957/article/details/96436634)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue3报错:runtime-core.esm-bundler.js:38 [Vue warn]: Invalid prop: type check failed for prop ...](https://blog.csdn.net/weixin_44001222/article/details/127625376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泠山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值