C/C++ 二维数组赋值问题

我今天碰到一道出乎我以前理解的问题:

二维数组元素a[2][3]在内存中的存放顺序是a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2]

并且是连着存放的。可为什么我辅助的时候采用以下这样的形式没法给二维数组赋值呢?还请大佬指点,不甚感激。

    int a[2][3];
    for(int i=0;i<6;i++)
        scanf("%d",&a[i]);
0

1个回答

二维数组事实上叫做数组的数组。a[i]是数组名,a[i][j]是数组a[i]的第j个值。数组名表示数组的首地址,所以a[i]是数组a[i]的首地址,不用&来取地址。scanf("%d",&a[i])是不对的。要给二维数组赋值要用两个循环:

for(int i=0;i<2;i++){
for(int j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}

或者,你想把二维数组当一维数组看待:

int *p=&a[0][0];//获取二维数组首地址
for(int i=0;i<6;i++)
{
scnaf("%d",p);
p++;
}
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言中的二维数组问题
在《C和指针》Page157中讲到多维数组(例matrix[3][10])时,*(matrix+1)+5是一个指向matrix[1][6]的指针,等同于matrix[1]+5.而*(*(matrix+1)+5)就是matrix[1][6]. 在这里matrix表示一个指向若干整型元素数组的指针.rn     而《C陷阱与缺陷》的第三章-语义"陷阱",讲到指针与数组的关系时,作者提到"C语言只有一维
基于proteus的51单片机仿真实例四十二、C语言的二维数组演示实例
本系列文章讲述了基于proteus仿真的51单片机学习,内容全面,不仅讲解电路原理,还讲解了单片机c语言,实例丰富,内容全面。
C/C++ 二维动态数组的分配和赋值
平台:Visual Studio 2013rnrnrn近期找工作中,错过了阿里和腾讯的笔试,百度的笔试也让我措手不及。还好有个赛码网能让我练练在线笔试题。 最近笔试题总是会调试不出来,主要是存在着输入输出不熟悉以及不知道二维数组如何建立。rn先解决二维数组的建立问题~rn明晚小米笔试加油~rnrnrn#define _CRT_SECURE_NO_WARNINGSn#includen#include
C语言-- 二维数组变量指针取值的写法
#include n//二维数组 指针取值的三种写法 nint main(int argc, const char *argv[])n{n //声明一个二维数组并赋值 n int a[3][4] = {{0,1,2,3},n {4,5,6,7},n {8,9,10,11}};n//1.a+1二维数组指针变量a向前移动一个单位,移动到二维数组的第二个元素{4,5,6,7}
c语言二维数组初始化的方式
#include <stdio.h>n#include <stdlib.h>nint main()n{n int **arr;n int m=3,n=4,i,j;n arr = (int **)malloc(sizeof(int*)*m);n for(i=0; i<m; i++)n arr[i] = (int *)malloc(sizeof(int)*n);
C Tricks(三)—— 以一维数组的形式对二维数组赋值
二维数组的本质仍然是一维线性空间(行序优先)。nint mat[3][4];nint *p = (int *)mat; n // 将二维数组转换为一维数组int r = sizeof(mat)/sizeof(mat[0]);nint c = sizeof(mat[0])/sizeof(mat[0][0]);nint cnt = 0;nfor (int i
[C语言]给一个二维字符数组赋值的问题
二维字符数组的赋值
scanf读入二维数组的某坑
以前一直发现这个坑后来忘了,然后在做poj的一道很简单的dfs题时再次遇到还郁闷了好久,在此记录以免踩雷poj2386的水洼,典型的dfs不做解释AC代码如下//laken#include &amp;lt;iostream&amp;gt;n#include &amp;lt;cstdio&amp;gt;nnusing namespace std;nnchar lake[105][105];nint n,m;nnvoid dfs(i...
千万不要用memset函数对二维数组进行初始化
memset函数的初始化只能对一维数组,对于每一行,是连续分配的; 然而对于各行之间,却不是连续非配的,容易出错
【C语言简单说】十九:二维数组循环嵌套(1)
(▼ _ ▼) 又到了这一节 了,这是痛苦的一节,因为我完全不懂如何像新手说明循环嵌套。。。因为很多新手理解不了=。=,我就直接拿我以前的教程复制上来了。 n首先先说循环嵌套:循环嵌套的意思就是循环里面有一个循环,例如外面一个循环的跳出条件是i<5,i初始值是0,里面的的循环的条件和外面的一样,那么当外面循环1次那么里面就会循环5次,因为循环需要条件不成立的时候才能跳出来,循环里面的循环执行完它的循
c语言 char类型(二维数组篇)
例子:char str[3,5]nn定义一个字符类型的数组,nn有3个字符串nn字符串最大长度为5
C语言二维数组与指针的小结
二维数组与指针n要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知道,一个二维数组在计算机中存储时,是按照先行后列的顺序依次存储的,当把每一行看作一个整体,即视为一个大的数组元素时,这个存储的二维数组也就变成了一个一维数组了。而每个大数组元素对应二维数组的一行,我们就称之为行数组元素,显然每个行数组元素都是一个一维数组na[3][4] = {1,2,3,4,5,6,7,8,9...
c语言 实现二维数组的拷贝 memcpy函数的使用
#include &amp;lt;stdlib.h&amp;gt;n#include &amp;lt;stdio.h&amp;gt;n#include &amp;lt;string.h&amp;gt;nvoid printarr2d(int (*a)[3],int row,int col);nint main()n{n int i,j;n int a[2][3] = {{1,2,3},{4,5,6}};n int b[4][3...
C语言中一位数组,二维数组,变长数组的定义
明确概念:C语言不允许单独声明未定义长度的数组。C99中,一位数组的声明(同时赋值)时可以不写数组长度。如 int myarray[]={1,2,3,4,5};   的原因是,编译器会根据赋值自动给出数组长度。但是,二维数组的声明时必须写上边界。如下的写法unsigned int grades[][] = {n {80,81,82,83,8...
二维数组初始化
@TOC二维数组初始化及输出n//二维数组动态初始化及输出nint[][] at=new int[2][];nat[0]=new int[2];nat[1]=new int[3];nnat[0][0]=10;nat[0][1]=11;nat[1][0]=20;nat[1][1]=21;nat[1][2]=22;nnint num=0;nwhile(num&amp;lt;at.length){n for ...
c语言二维数组的定义和初始化
二维数组:rn用于存放一位数组的数组,被称为二维数组。rnrnrn#include //二维数组的长度n#define kI 3 n#define kJ 4nn/**n 打印二维数组元素n */nvoid printfArray(int array[][kJ], int x) {n for (int i = 0; i < x; i++) {n for (int j = 0
静态二维数组和动态二维数组(C语言)
1、理解什么是静态二维数组和动态二维数组nn静态二维数组:可以理解为程序中如下定义的数组(定义一个3行4列的静态二维数组)nint [3][4] = {{1,1,1,1}, {2,2,2,2}, {4,4,4,4}};nnn动态二维数组:可以理解为程序中如下定义的数组(定义一个3行4列的动态二维数组)n#includen#includenn#define ROWS 3n#define
C语言二维数组
首先,要理解一维数组和二维数组其实都是一维数组,在内存中线性存放提到二维数组如:a[3][4]很多人的第一印象是这样的:   这样并没有错,但是只能作为一个印象图来理解而我们要知道二维数组其实是一个一维数组,只不过一维数组的每个元素又是一个一维数组,就像下面这样:初始化对二维数组的赋值:for (i = 0; i &amp;lt; 3; i++)n{n int j = 0;n for (j = 0; j ...
【C语言】指针与二维数组的结合(定义、赋值、输出)
手机贴图:nnnn代码:nnn 1 #include &quot;stdio.h&quot;n 2 n 3 int main() {n 4 n 5 int (*p)[4],i,j;n 6 int a[5][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{17,18,19, 20}};n 7 p = a;n 8 n...
给结构体里定义的二维数组赋值
这些小知识都是自己积累的,正确性经过本人亲自检验了   如果您也认为是对的,那么欢迎借鉴使用,如果有不对的地方,希望能够指出错误,我将不胜感激
C语言矩阵对比,动态二维数组定义,随机数生成
C语言矩阵对比,动态二维数组定义,随机数生成n大一的时候,我们的高代老师教矩阵时让我们去写个程序生成1000000个矩阵判断矩阵A与矩阵B,在AB=BA概率下相等情况有多少,(当然,只是为了他下节课教学打个底子)我在尝试后给出了一个答案n我的想法时是先随机生成两个矩阵,对比后给出如果相同,则返回1,在主函数相加,得最后成立的有多少个n#include &amp;lt;stdio.h&amp;gt;n#includ...
二维字符数组赋值和字符串比较
 nn一、赋值n1. 声明时初始化赋值nnnchar str[][20]={&quot;aaa&quot;,&quot;bbb&quot;,&quot;ccc&quot;}; nnn2. sprintf / strcpy(#include &amp;lt;string.h&amp;gt;)nnnchar str[3][20]; nsprintf(str[0],&quot;aaa&quot;);  / strcpy(str[0],&quot;aaa&quot;);nsprintf(str[1],&quot;b
二维数组传递给一维数组
void main(){extern void targetfcn(int [], int);static int A[2][2] = {{1,2},{3,4}};targetfcn((int*)A, 2);}void targetfcn(int a[], int n){}
C++动态二维数组的申请、赋值、使用、释放以及作参数示例
C++动态二维数组的申请、赋值、使用、释放以及作参数示例
C语言之一维数组、二维数组冒泡排序
一维数组排序n#include&amp;lt;stdio.h&amp;gt;n#include&amp;lt;stdlib.h&amp;gt;n#include&amp;lt;time.h&amp;gt;nint main()n{n int n,temp;n int a[100]; n srand(time(NULL));n for(int i=0;i&amp;lt;100;i++)n {n n=rand()%100;n a[i]...
C语言:二维数组元素的引用
任务代码:rn(1)rn#include nint main()n{n int a[3][5],i,j;n printf("输入3*5数组:\n");n //输入n for(i=0;i<3;i++)n {n for(j=0;j<5;j++)n {n scanf("%d",&a[i][j]);n }n
【C语言】一维数组和二维数组
nn一维数组:类型名 数组名[元素个数],其中在书写时,元素个数可省略,系统会自行判断。nn nn                                           nn二维数组:本质上是以数组作为数组元素的数组,即“数组的数组”nn nn类型说明符 数组名[常量表达式][常量表达式]nn nn行优先原则   eg:a[ ][ ]   第一个中括号内容可省略,第二个不可以省略...
memset函数与二维数组初始化的问题
今天在编写Levenshtein distance距离函数时用到二维数组,用memset对其初始化时发生了问题,直接代码:rnrnint** m = NULL;n int i = 0,j = 0;n m = (int**)malloc(row * sizeof(int));n for (i = 0;i < row; i++)n {n m[i] = (int*)malloc(col * sizeo
C语言--二维数组
二维数组做形参rnrnrnrnvoid find0A0D(char* src, char dst[][50])rn{rn char* ptr;rn int i = 0;rn int n = 0;rn ptr = src;rnrn while (*ptr != '\0')rn {rn if (*ptr == '\r') // 接收到了0x0drn {rn ...
二维数组与二重指针赋值问题之实验
前一段时间做了一个关于二维数组和二重指针的互相赋值的实验,很有意思,特记录下来。由于数组是指针的语法糖,所以我之前一直认为两者可直接进行赋值转换。后来发现在二维数组中这样做是不可行的,现将实验现象记录如下:nn实验:nnn#include &amp;lt;stdio.h&amp;gt;nint main(int argc,char *argv[])n{n int a[2][5]={{1,2,3,4,5},{...
卡尔曼滤波C语言程序
使用C语言实现卡尔曼滤波,并且用二维数组赋值进行了验证。
在cuda中使用二维数组(地址赋值)(不带对齐)
总有些童鞋想知道怎么在CUDA中使用二维数组([M][N]这种类型),其实这个很简单,不过你要完全弄明白,必须对指针,地址等概念非常清楚才行。写这篇博客解决下大家这个问题:n1、首先讲述一下在一般C语言中如何使用二维数组。n[cpp] view plain copy print?int r, c;  int **arr = (int**)malloc(ROWS*sizeof(int*));  int
多维数组的初始化。大括号{}与小括号()的区别
n#include &amp;lt;stdio.h&amp;gt;nint main(void)n{n int a[3][2]={{0,1},{2,3},{4,5}};n int b[3][2]={(0,1),(2,3),(4,5)};n int *p;n int *p1;nn p=a[0];n p1=b[0];nn printf(&quot;%d\n&quot;,p[0]);n printf(&quot;%d\n&quot;,p1[0]...
根据键盘的输入,创建一个动态二维数组,逐一赋值,输出
#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;int main(){//    int i,j;//    int m,n;//    scanf(&quot;%d %d&quot;,&amp;amp;m,&amp;amp;n);//    int *p = (int *)malloc(sizeof(int)*n*m);//    for(i=0;i&amp;lt;m*n;i++)//  ...
C语言 字符串指针与二维字符串数组
31.字符串指针nnchar *str = "hello world";    //hello world这个字符串存储在常量区,str只保存了字符串常量的首地址nn字符串指针变量的定义说明与指向字符变量的指针变量说明是相同的。只能按对指针变量的赋值不同来区别。对指向字
c语言指针篇——数组指针和指向二维数组的指针变量(*p)[N]
数组指针nn首先,我们先介绍一下二维数组和二维数组的指针,二维数组相当于一个特殊的一维数组里面每个元素又是一个一维数组,例如:int a [ 3 ] [3],可以看成一个3行的一个列数组,每一列的元素又是一个长度为3的数组,数组名的一个特殊一维数组的首地址,如下: n na(第0行的首地址,也是可以是&a [0])指向a [0],对0行首地址元素的引用就有 *a = a [0]; na + 1...
C/C++二维数组的相关总结(扩展:三维数组)
写在前面:rn今天为什么要把“二维数组”这个概念重新拎出来说一说呢。原因是这样的:前几天在用c++写银行家算法的时候,resource类的成员变量有二维数组,开始写的是默认初始化的方式,类似于这种:rnclass Arn{rn ...rn privated:rn arr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};rn}rnrn结果报错。所以就想重新写个成员函数用来初始化二维...
memset函数为二维数组初始化
1int* a;  a = new int[10]; sizeof(a) 只会返回出来指针的大小,所以我们只能自己计算这个数组的长度,这里应当是sizeof(int) * 10, 因为数组里面有10个int所以应该,memset(a, 0, sizeof(int)*10);//将a数组初始化为02 int **p;//开一个n*m的数组 p = new int*[n]; for (int i = ...
C语言 字符串数组 二维数组 指针 动态内存分配(2018.11.25)
字符串数组rn若字符串数组内内没有‘\0’,用%s输出时,系统会一直找到‘\0’为止。即使超出数组的范围也一直找。rnchar c[] = “I am happy”; //字符串,长度为11rnchar c[] = {‘I’,rn使用strcat、strcpy,strcmp,strlen,strlur,strupr函数时,需要包含#include&amp;amp;amp;lt;string.h&amp;amp;amp;gt;的头文件rnstrcat 连接...
C语言:使用指针操作二维数组
任务代码:n(1)用指向二维数组元素的指针:n#include nint main( )n{n int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};n int *p;n for(p=a[0];p<a[0]+12;p++)n {n printf("%3d ",*p);n }n return 0;n}
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java 二维数组学习 python二维数组教程