一个数组可以直接赋给另一个数组吗?
感觉不行,做了个实验,如图,但为什么输出的是-1-1101索引越界了吧
是b = a 本帖最后由 栗粒粒 于 2020-5-31 18:11 编辑
a表示的是a数组的第6个元素了吧(因为从a开始),不是表示一个含有5个元素的数组了,同理b也是,所以你的操作不仅不是复制数组,而且下标5也越界了,5个元素的数组下标最多为4
如何赋值参考这里http://www.myexception.cn/c/350693.html或者直接用循环历遍 直接用赋值号=是不可以的(b=a),如何赋值参考这里http://www.myexception.cn/c/350693.html 赋值要么用循环历遍去给每个元素赋值,要么参考这里http://www.myexception.cn/c/350693.html 本帖最后由 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");
} emmm.我大概能理解你,学得还没有这么多。想法还很多。直接copy我不知道行不行,但是你的代码的意思在PC的眼里和你想的完全不一样。
首先回顾知识点,数组
数组的定义int a = {1,2,3,4,5};表示我定义一个含有5个整型元素的数组
定义完后a 又表示什么呢? 表示的是a这个数组的第6个元素。 但是你只初始化了5个啊!所以数组越界了
所以b = a的真正意思是 把a第6个元素的值赋值给b第6个元素。
至于如何复制数组,楼上回答挺好了,小甲鱼课如果我记得没错也会讲的,好好听课。
数组ab下标范围都只是0~4 下标为5的元素为“随机值”
这里只是把数组a中下标为5的元素 赋值给了数组b下标为5的元素中所以b是“随机值”
数组b未初始化第0~4个元素也是“随机值”
所以你输出数组b的第0~5个元素就全是“随机值”了
DEVC++中 数组越界并不会报错
页:
[1]