鱼C论坛

 找回密码
 立即注册
查看: 1320|回复: 7

[已解决]一个数组可以直接赋给另一个数组吗?

[复制链接]
发表于 2020-5-31 16:53:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
感觉不行,做了个实验,如图,但为什么输出的是-1-1101
最佳答案
2020-5-31 22:23:58
emmm.我大概能理解你,学得还没有这么多。想法还很多。直接copy我不知道行不行,但是你的代码的意思在PC的眼里和你想的完全不一样。
首先回顾知识点,数组
数组的定义  int a[5] = {1,2,3,4,5};  表示我定义一个含有5个整型元素的数组
定义完后a[5] 又表示什么呢? 表示的是a这个数组的第6个元素。   但是你只初始化了5个啊!所以数组越界了
所以b[5] = a[5]的真正意思是 把a第6个元素的值赋值给b第6个元素。

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


无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-31 17:16:13 | 显示全部楼层
索引越界了吧
是b[4] = a[4]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 18:04:53 | 显示全部楼层
本帖最后由 栗粒粒 于 2020-5-31 18:11 编辑

a[5]表示的是a数组的第6个元素了吧(因为从a[0]开始),不是表示一个含有5个元素的数组了,同理b[5]也是,所以你的操作不仅不是复制数组,而且下标5也越界了,5个元素的数组下标最多为4
如何赋值参考这里http://www.myexception.cn/c/350693.html或者直接用循环历遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 18:08:12 | 显示全部楼层
直接用赋值号=是不可以的(b=a),如何赋值参考这里http://www.myexception.cn/c/350693.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 18:09:12 | 显示全部楼层
赋值要么用循环历遍去给每个元素赋值,要么参考这里http://www.myexception.cn/c/350693.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[5];
    for(int i=0;i<5;i++) printf("%d:%d\n",i,a[i]);
    memcpy(b,a,sizeof(a)); //a数组拷贝到b数组
    for(int i=0;i<5;i++) printf("%d:%d\n",i,a[i]);
    for(int i=0;i<5;i++) printf("%d:%d\n",i,b[i]);
}
int main(){
    test01_arraycopy();
    system("pause");
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 22:34:56 | 显示全部楼层
数组ab下标范围都只是0~4   下标为5的元素为“随机值”
这里只是把数组a中  下标为5的元素 赋值给了数组b下标为5的元素中  所以b[5]是“随机值”
数组b未初始化  第0~4个元素也是“随机值”  
所以你输出数组b的第0~5个元素就全是“随机值”了
DEVC++中 数组越界并不会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 17:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表