晓觉懿 发表于 2020-5-31 16:53:23

一个数组可以直接赋给另一个数组吗?

感觉不行,做了个实验,如图,但为什么输出的是-1-1101

qiuyouzhi 发表于 2020-5-31 17:16:13

索引越界了吧
是b = a

栗粒粒 发表于 2020-5-31 18:04:53

本帖最后由 栗粒粒 于 2020-5-31 18:11 编辑

a表示的是a数组的第6个元素了吧(因为从a开始),不是表示一个含有5个元素的数组了,同理b也是,所以你的操作不仅不是复制数组,而且下标5也越界了,5个元素的数组下标最多为4
如何赋值参考这里http://www.myexception.cn/c/350693.html或者直接用循环历遍

栗粒粒 发表于 2020-5-31 18:08:12

直接用赋值号=是不可以的(b=a),如何赋值参考这里http://www.myexception.cn/c/350693.html

栗粒粒 发表于 2020-5-31 18:09:12

赋值要么用循环历遍去给每个元素赋值,要么参考这里http://www.myexception.cn/c/350693.html

java2python 发表于 2020-5-31 19:53:20

本帖最后由 java2python 于 2020-5-31 19:56 编辑

实在是不提倡这种做法,逐个赋值比较好(无非是加个for())
#include<string.h>
#include<stdio.h>
#include<windows.h>

void test01_arraycopy(){
    int a[] = {1,2,3,4,5};
    int b;
    for(int i=0;i<5;i++) printf("%d:%d\n",i,a);
    memcpy(b,a,sizeof(a)); //a数组拷贝到b数组
    for(int i=0;i<5;i++) printf("%d:%d\n",i,a);
    for(int i=0;i<5;i++) printf("%d:%d\n",i,b);
}
int main(){
    test01_arraycopy();
    system("pause");
}

Justin1 发表于 2020-5-31 22:23:58

emmm.我大概能理解你,学得还没有这么多。想法还很多。直接copy我不知道行不行,但是你的代码的意思在PC的眼里和你想的完全不一样。
首先回顾知识点,数组
数组的定义int a = {1,2,3,4,5};表示我定义一个含有5个整型元素的数组
定义完后a 又表示什么呢? 表示的是a这个数组的第6个元素。   但是你只初始化了5个啊!所以数组越界了
所以b = a的真正意思是 把a第6个元素的值赋值给b第6个元素。

至于如何复制数组,楼上回答挺好了,小甲鱼课如果我记得没错也会讲的,好好听课。


1070245317 发表于 2020-5-31 22:34:56

数组ab下标范围都只是0~4   下标为5的元素为“随机值”
这里只是把数组a中下标为5的元素 赋值给了数组b下标为5的元素中所以b是“随机值”
数组b未初始化第0~4个元素也是“随机值”
所以你输出数组b的第0~5个元素就全是“随机值”了
DEVC++中 数组越界并不会报错
页: [1]
查看完整版本: 一个数组可以直接赋给另一个数组吗?