要理解C语言中数组的运作机制,我们首先必须理解如何声明一个数组,例如:
int a[3];这个语句声明了a是一个拥有了3个整型元素的数组,类似的:
struct{int p[4];
double x;
}b[17];
声明了b是一个拥有17个元素的数组,其中每个元素都是一个结构,该结构中包括了一个拥有4个整形元素的数组(命名为p)和一个双精度类型的变量(命名为x)。
现在考虑下面的例子:
int calendar[12][31];这个语句声明了calendar是一个数组,该数组拥有12个数组类型的元素,其中每个元素都是拥有31个整型元素的数组(而不是一个拥有31个数组类型的元素的数组,其中每个元素又是一个拥有12个整型数组元素的数组)因此sizeof(calendar)的值是372(3112)与sizeof(int)的乘积。
如果calendar不是用于sizeof的 *** 作数,而是用于其他的场合,那么calendar总是被替换成一个指向calendar数组的起始元素的指针。要理解上面这句话的含义,我们首先必须理解有关指针的一些细节。
c语言中将一个数组的值赋给另外一个数组,好像要用指标来赋值 用不用都可以。
#include "stdioh"
void main()
{
int a[]={0,1,2,3,4,5,6,7,8,9},b[10],c[10];
int i,p=a;
for(i=0;i<10;i++)
b[i]=a[i]; 不用指标赋值。
for(i=0;i<10;i++)
c[i]=(p+i); 用指标赋值。
for(i=0;i<10;i++)
printf("%d ",b[i]);
printf("\n");
for(i=0;i<10;i++)
printf("%d ",c[i]);
printf("\n");
}
(1)字元阵列相当于字串,可以用标准函式strcpy()直接进行字串复制。
比如 把c复制到a中就可以这样用:strcpy(a,c);
这个函式包含在标头档案 <stringh>中
(2)单个复制
for(int i= 0; i < 2; ++i)
{
b[i] = a[i];
}
有两种方法可以实现。 1 逐个赋值法。 采用回圈,逐项赋值。 以整型为例,int a[10], b[10]; 要把a的值赋值给b,可以写作 int i; for(i = 0; i < 10; i ++) b[i] = a[i]; 2 整体复制法。 利用C语言库函式memcpy可以整体复制。memcpy宣告与string
C语言中,怎么把一个数组的前几个元素赋值给另外一个数组?
最简单的: s2[0]=s1[0]; s2[1]=s1[1]; s2[2]=s1[2];
或者你用回圈: for(int i=0;i<3;i++)s2[i]=s1[i];
完全赋值??
b=a;
即可。
当然,要用你上面的写法的话,必须
b[i][j]=a[i][j];
你上下标都不一样,值当然不同啦。
第一个问题,用FOR回圈吧第一个阵列的值 给第二个,
第二个问题,可以,完全可以,第一个矩阵刚好是第二个的转制矩阵,当然可以了。
array_bine() 建立一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
如何将一个数组的值赋值给另一个数组 为方便说明,定义两个整型阵列a,b,并实现将a中的值赋值到b中。
int a[4] = {1,2,3,4}, b[4];
1、 通过阵列遍历,逐个赋值。
定义回圈变数int i;
for(i = 0; i < 4; i ++)
b[i] = a[i];
该程式功能为遍历阵列a,逐个赋值到阵列b对应元素中。
2、 借助记忆体复制函式memcpy,整体赋值。
void memcpy(void dst, void src, size_t size);
这个函式的功能为将src上,大小为size位元组的资料赋值到dst上。
呼叫该函式时需要引用标头档案cstring,即
#include <cstring>
赋值阵列的程式码为
memcpy(b,a,sizeof(a));
将小阵列的值回圈赋值给大阵列,如果大阵列未满,继续回圈赋值。或者直接一个回圈(大阵列的长度作为回圈限制)赋值到小阵列完,重置小阵列的index为0,直到大阵列全部赋值完。
相关拓展
第一种用for回圈:
1
2
3
4
int[] x={1,2};
int[] y=new int[2];
for(int i=0;i<xlength;i++){
y[i]=x[i];
第二种用java提供的arraycopy
1
2
3
int[] x={1,2};
int[] y=new int[2];
Systemarraycopy(x, 0, y, 0, xlength);变数依次是(原阵列,从原阵列第几位开始,目标阵列,从第几位开始贴上,复制长度)
java怎么把一个数组的值回圈赋值给另外一个大阵列 String [] arrA = {"a","b","c","d"};
String [] arrB = new String[10];
if(arrAlength > 0 && arrBlength > 0){
for(int i = 0; i < arrBlength; i++){
arrB[i] = arrA[i % arrAlength];
}
}
for(String str: arrB){
Systemoutprintln(str);
}
1、首先打开c语言项目,输入如图所示代码创建一个int类型的数组。
2、然后规定数组的大小,输入如图所示代码设置数组存储数据。
3、然后在mian函数中,创建int类型的变量i,输入如图所示代码用for语句。
4、输入如图所示代码在for语句中进行循环。在for语句中,利用printf语句。
5、然后设置输出的类型,输入如图所示代码再写入输出的对象。
6、然后点击运行程序,就可以看到数组的所有数据。
数组赋值可以通过以下几种方法:1、定义的时候直接赋初值(用{});
2、用循环语句依次给数组各元素赋值;
3、将数组放在一个结构体里面,通过结构体的引用给数组整体赋值;(数组本身不能直接整体赋值)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)