C语言一维数组赋值方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言一维数组赋值方法相关的知识,希望对你有一定的参考价值。
一位数组赋值的几种方式int
a[10]=1,2,3,4,5,6,7,8,9,10;
.一般初始化,例:
int
a[10]=3,10,5,3,4,5,6,7,8,9;
int
array[5]=2,3,4,5,6;
其结果是给每一个数组元素都指定了初值。
2.部分元素初始化,其余元素均为零。
例:
int
a[10]=7,8,9,67,54;
仅给前5个元素赋初值,后5个元素初值为0。
3.全部元素均初始化为1。
int
a[10]
=
1,1,1,1,1,1,1,1,1,1;
不允许简写为 int
a[10]=1;或int
b[10]=1*10;
同学们想一想上述定义a和b数组后,初始化结果是什么?
注意:当程序不给数组指定初始值时,编译器作如下处理:
(1)部分元素初始化,编译器自动为没有初始化的元素初始化为0。
(2)数值数组如果只定义不初始化,编译器不为数组自动指定初始值,即初值为一些随机值(值不确定)。
4.如果全部元素均指定初值,定义中可省略元素的个数。
例:
int
a[5]=9,28,3,4,5;可以写为:
int
a[
]=9,28,3,4,5;
数组元素的引用
c语言规定,不能整体引用数值数组,只能逐个引用数组元素;
元素引用方式:数组名[下标表达式]
例:a[0]
=
a[5]
+
a[7]
-
a[2*3]
“下标表达式”可以是任何非负整型数据。
特别强调:1.一个数组元素,实质上就是一个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。
2.在c语言中,数组作为一个整体,不能参加数据运算,只能对单个的元素进行处理。 参考技术A 1、初始化时进行赋值。
int a[2] = 1,2;
char str[20] = "hello world"; 2、逐个赋值
int a[4];
a[0] = 1,a[1]=2, a[2] = 3, a[4]=4; 等同于。
for (int inx=0; inx!=4; ++inx) a[inx]=inx+1; 3、通过函数复制数据以实现赋值
比如下面的代码,通过memcpy函数来实现数据的复制,以实现数组赋值的功能。
#include
#include
#include
int main()
int inx;
int a[10] = 1,2,3,4,5,6,7,8,9,10;
int b[5];
//复制4个元素,b[4]将是随机值
memcpy(b, a, 4 * sizeof(int));
for (inx=0; inx!=5; ++inx) printf("%d\t", b[inx]);
printf("\n");
memcpy(b, a+4, 5 * sizeof(int));
for (inx=0; inx!=5; ++inx) printf("%d\t", b[inx]);
printf("\n");
return 0;
参考技术B int
i,a[10];
for(i=0;i<10;i++)
cin>>a[i];
这样可以用键盘赋值。输入时可以以空格或回车作为分隔符
c语言怎么把二维数组的字符串给到一维数组?
#include <stdio.h>
int main()
char a[15]="你好";
char b[3][15]="323","223","123";
a=b[2];//这里怎么办
printf("%s",a);
按元素赋值:
遍历一维数组,并将每个元素赋值到二维数组的对应元素上。
或者遍历二维数组,将每个元素赋值为一维数组对应值上。
优点为操作灵活,可以按照需要任意赋值。
2 当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。
如一维数组为a,二维数组为b,基础类型为TYPE,需赋值元素个数为n,可以调用
memcpy(b,a,sizeof(TYPE)*n);
该方法有点为操作简单,执行效率高。
不过所需满足的前提条件多。在满足上述所有条件时,用memcpy的方式更为简单。
个就是apply的一个巧妙的用处,可以将一个数组默认的转换为一个参数列表([param1,param2,param3] 转换为 param1,param2,param3) 这个如果让我们用程序来实现将数组的每一个项,来装换为参数的列表。
参考技术A 字符串不能用赋值号(=)赋值。有两种方法,一是用库函数strcpy(),二是一个一个字符赋值。第一种方法,前面已经有答友写了程序。下面说第二种方法。
不用库函数,可以这样写:
#include <stdio.h>
int main()
char a[15]="你好";
char b[3][15]="323","223","123";
int i;
for(i=0;a[i]=b[2][i];i++);
printf("%s\n",a);
也很简单。
有什么问题请留言。 参考技术B
使用内存复制函数
memcpy(a, b[2], strlen(b[2]) * sizeof(char) + 1);
格式:
memcpy ( 目标地址 , 源地址 ,内存字节长度);
其中
strlen(b[2]):计算b[2]行地址开始的字符串长度(不含结束符)
sizeof(char):跨编译器跨环境的写法,返回char类型的字节宽度。
两者相乘得到字符串占用内存长度(字节),最后补一个结束符的长度。
这个需要调用字符串复制函数strcpy,像这样:
#include <stdio.h>
#include <string.h>
int main()
char a[15]="你好";
char b[3][15]="323","223","123";
strcpy(a,b[2]);
printf("%s",a);
return 0;
截图:
以上是关于C语言一维数组赋值方法的主要内容,如果未能解决你的问题,请参考以下文章