C语言 数组中b[3][2]=a[2][3] 是如何进行赋值的。

作者&投稿:轩峰 (若有异议请与网页底部的电邮联系)
C语言的数组问题,若有定义:int a[2][3];以下选项中对a数组元素正确引用的是 A.a[2][!1] B.a[2][3]~

选D。
一个二维数组可以被认为是一个带有 x 行和 y 列的表格。下面是一个二维数组,包含 2 行和 3列:

因此,数组中的每个元素是使用形式为 a[ i , j ] 的元素名称来标识的,其中 a 是数组名称,i 和 j 是唯一标识 a 中每个元素的下标。i最大值为1,j最大值为2,超出此范围则表示错误。

扩展资料:
数组使用规则:
1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)
3.如不给可初始化的数组赋初值,则全部元素均为0值。
4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
参考资料:
百度百科-数组

int a[2][3];
int b[6];
for(int i=0; i<2; i++)//行
for(int j=0; j<3; j++)//列
{
scanf("%d", a[i][j]);//输入二维数组

int index=0;//循环计数
for(int i=0; i<2; i++)//行
for(int j=0; j<3; j++)//列
{
b[index++] = a[i][j]);//用二维数组给数组b赋值

表达式b[3][2] = a[2][3]表示把a数组中第2行第3列的元素的值赋给b数组中第3行第2列的元素(从0开始算)
该赋值有错误,a[2][3]下标越界了,a的下标范围是[0,1][0,2],该操作将会读取内存中不属于该数组的数据,是没有意义的数值

如果你想把a拷贝给b只能逐个赋值
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
b[i][j] = a[i][j];
}
或者用库函数
memcpy(b, a, sizeof(a));

如果定义是
int a[2][3]={{1,2,3},{4,5,6}};
还不知道b数组是如何定义的。
起码 a[2][3] 已经越界了。所以 b[3][2]=a[2][3] 是一个未知结果的操作。

这个赋值是单个元素的赋值。即对 b[3][2] 赋值。
C 语言不支持数组的整体拷贝,除非你将数组放在结构体内。

update:
晕了,一开始还没注意边界问题。。汗死。。
没错,这个问题本身就有问题,越界了。

错了。。。a[2][3] 第一个下标是0,1.第二个是0,1,2.
a[2][3]是个随机值。所以[3][2]就被赋值成不知道啥值了。

a[2][3]应该会出错!

1 2
3 4
5 6


尖扎县15066466316: C语言 数组中b[3][2]=a[2][3] 是如何进行赋值的. -
麻独丹灯: 如果定义是 int a[2][3]={{1,2,3},{4,5,6}}; 还不知道b数组是如何定义的.起码 a[2][3] 已经越界了.所以 b[3][2]=a[2][3] 是一个未知结果的操作.

尖扎县15066466316: (c语言用指针)已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中. -
麻独丹灯: int a[2][3]={{1,2,3},{4,5,6}};int b[3][2];int *p=&(a[0][0]);for(int i=0;i<3;i++)for(int j=0;j<2;j++)b[i][j]=*(p+i+3*j);

尖扎县15066466316: c语言中b[3][3]={0,1,2,0,1,2,0,1,2}是什么意思 -
麻独丹灯: b[3][3]={0,1,2,0,1,2,0,1,2};表示将{}中的数值赋值给二维数组b,9个数分别对应数组b中9个元素. 该语句可以写为b[3][3]={{0,1,2}, {0,1,2}, {0,1,2}};这种写法会显得更直观,更容易理解. 可以通过以下程序段来理解以上对二维数组的初始化或赋...

尖扎县15066466316: c语言中 可以把一个数组的值给另一个数组吗 比如a[5]的元素是1,2,3,4,5 b[5]的元素 -
麻独丹灯: b[5] = a[5];肯定是不行的,那样只改了b[5]其他元素没改.展开全部 试试 b = a; 行不行吧,不太记得了

尖扎县15066466316: C语言数组问题:数组元素被赋值.例如:b[1][2]=a[2][3]/2 怎么理解
麻独丹灯: b[1][2] 和 a[2][3] 都是二维数组,C语言的数组下标从0开始. b[1][2]=a[2][3]/2 的意思就是,把数组a的第3行第4列的那个值,除以2,得到一个新的值,然后把这个值给数组b的第2行第3列的元素. 注意,b[1][2]是数组b的第2行第3列的元素,因为下标从0开始.b[0][0]才是第1行第1列.

尖扎县15066466316: 单片机C语言 怎么将数组a奇偶字节交换得到数组b? -
麻独丹灯: int * swap(int * a,int n) { int i; int*b=(int*)malloc(sizeof(int)*n); for(i=0;i<n/2;i++) { b[i*2]=a[i*2+1] b[i*2+1]=a[i*2]; } return b; }

尖扎县15066466316: c语言中,这样定义一维数组正确吗? int a[5]={0,1,2,3,4} -
麻独丹灯: 这是正确的,你定义了a[5]的数组,就相当于定义了5个int型a[0],a[1],a[2],a[3],a[4],然后按照顺序依次赋值,即a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4这样

尖扎县15066466316: 在c语言数组中如何实现如下交换【1 2 3 】【4 5 6 】【7 8 9】交换后【3 2 1】【4 5 6】【7 8 9】 -
麻独丹灯: 程序如下:#include<stdio.h> void main() { int a[3][3]={1,2,3,4,5,6,7,8,9},b; b=a[0][0]; a[0][0]=a[0][2]; a[0][2]=b; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) printf("%3d",a[i][j]); printf("\n"); } }

尖扎县15066466316: 用C语言编写已知两个数组,求第三个数组 -
麻独丹灯: #include int main() { int a[5] = {1, 2, 3, 4, 5}; int b[5] = {11, 4, 2, 7, 9}; int i; int c[5]; for(i = 0; i < 5; i++) c[i] = a[i] + b[i]; for (i = 0; i < 5; i++) printf("%3d", c[i]); return 0; }

尖扎县15066466316: c语言中:b=(a=3,a*3,a+2);则b的值 -
麻独丹灯: 1. 逗号表达式的返回值是最后一个表达式的结果,也就是 a +2的结果 2.逗号表达式的运算优先级最低,所以先执行其他的运算运算顺序: 1. a = 3; 2. a *3 3. a + 2 也就是 3 + 2 所以b = 5;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网