二维数组初始化的三种方式

问题描述:c语言二维数组如何初始化 大家好,小编来为大家解答以下问题,二维数组初始化时有哪些情况,请举例说明,总结二维数组的定义及初始化方法,现在让我们一起来看看吧!

定义一个二维数组a[3][2],赋初值{{1,2},{4,5},{5,6}},至少用三种不同的方法

二维数组初始化的三种方式的相关图片

1 有两种方法

(1)在定义时可以直接赋值来初始化。

(2)在定义后可以为其元素一个个来赋值。

2 示例

#include<stdio.h>。

void display(int arr[2][3], int row, int col){。

for (int i = 0; i < row; i++){。

for (int j = 0; j < col; j++){。

printf("%d ", arr[i][j]);。

}

puts("");

}

puts("");

int main(){

//方法(1)

int arr1[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };。

//方法(2)

int arr2[2][3];。

int num = 1;

for (int i = 0; i < 2; i++){。

for (int j = 0; j < 3; j++){。

arr2[i][j] = num++;。

}

}

display(arr1, 2, 3);。

display(arr2, 2, 3);。

getchar();

return 0;

3 运行结果

由结果可知,两种方式达到的效果是一样的。

4 扩展

由于C语言中数组中的元素的地址是连续的,所以下面的写法也是可以的,运行效果同上。

#include<stdio.h>。

void display(int arr[2][3], int row, int col){。

for (int i = 0; i < row*col; i++){。

for (int j = 0; j < col; j++){。

printf("%d ", arr[i][j]);。

}

puts("");

}

puts("");

int main(){

//方法(1)

int arr1[2][3] = { 1, 2, 3, 4, 5, 6 };。

//方法(2)

int arr2[2][3];。

int num = 1;

int *p = *arr2;//指向数组的第一个元素。

for (int i = 0; i < 2 * 3; i++){。

*p++ = num++;。

}

display(arr1, 2, 3);。

display(arr2, 2, 3);。

getchar();

return 0;

二维数组的声明方式有三种的相关图片

二维数组的声明方式有三种

有如下几种初始化方式:

1. 分行进行初始化

int a[2][3]={{1,2,3},{4,5,6}};。

2. 不分行的初始化

int a[2][3]={ 1,2,3,4,5,6};。

3. 为部分数组元素初始化

static int a[2][3]={{1,2},{4}};。

4. 可以省略第一维的定义,但不能省略第二维的定义。系统根据初始化的数据个数和第2维的长度可以确定第一维的长度。

int a[ ][3]={ 1,2,3,4,5,6};。

5. 若分行初始化,也可以省略第一维的定义。下列的数组定义中有两对{ },已经表示a数组有两行。

static int a[ ][3]={{1,2},{4}};。

C++ 的二维数组初始化的相关图片

C++ 的二维数组初始化

数组的4种声明方式:

1.先声明再初始化

例如:

//1.声明

int[] nums;

//初始化

nums = new int[5];。

2.声明并初始化

例如:

//2.声明、初始化

int[] nums = new int[10];。

3.创建数组同时赋值

例如:

//3.创建数组同时赋值

String[] names=new String[]{"大名","小米","夏雨荷"};。

int[] ages=new int[]{21,22,21,56,13};。

for (int i = 0;i < names.length;i++){。

System.out.prinrln(names[i]);。

for (int i = 0;i < ages.length;i++){。

System.out.prinrln(ages[i]);。

4.创建同时赋值,简写,不能写成两条语句。

例如:

//4.创建同时赋值,简写,不能写成两条语句。

String[] cities = {"上海","北京"};。

扩展资料:

数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。

数组是用于储存多个相同类型数据的集合。

在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

如何初始化一个二维数组的相关图片

如何初始化一个二维数组

(1)iostream后面不加.h,

(2)int n[3][3]=0有误,不能对数组进行这样的初始化,应该是对数组元素逐个赋值。

(3)int (*m)[3]=new int[3][3]; 前面不加int,加上的话,相当于在局部对m重新定义。

初始化方法如下:

(1)int m[3][3];。

for(int i = 0; i < 3; i++)。

for(int j = 0; j < 3; j++)。

m[i][j] = 0;。

(2)int **m = new int*[3]; 。

for(int i = 0; i < 3; i++)。

{

m[i] = new int[3]; 。

for(int j = 0; j < 3; j++)。

m[i][j] = 0;。

}

(3)int *m[3];

int **m = new int*[3]; 。

for(int i = 0; i < 3; i++)。

{

m[i] = new int[3]; 。

for(int j = 0; j < 3; j++)。

m[i][j] = 0;。

}

第二种写法和第三种写法本质上一样的,指向指针的指针其实就是指针的数组。

C语言二维数组的初始化表示方法有哪些

const int row = 4;。

int ** M2D = new int * [row];。

for(int i = 0; i < row; ++ i)。

    M2D[i] = new int [row - i - 1];。

    for(int j = 0; j < row - i - 1; ++ j)。

    {

        M2D[i][j] = i;。

    }

上面那个例子,就是申请一个4行的三角矩阵。

原理如下

int ** 作为二维数组的存储地址,也可以视为一维数组的数组,先为这个指针申请行空间(对应为各个数组的数组头),再为各个数组头申请一维数组所需的空间。

二维数组可分为** *[] 和[][],三者的存储方式可以不同,具体的在c++ prime里面有详解。

原文地址:http://www.qianchusai.com/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E4%B8%89%E7%A7%8D%E6%96%B9%E5%BC%8F.html

kodi海报墙搜刮器,为什么kodi海报墙加载不出来

kodi海报墙搜刮器,为什么kodi海报墙加载不出来

影驰显卡怎么样,显卡品牌质量排名前十名

影驰显卡怎么样,显卡品牌质量排名前十名

科学文化素质自我评价100字,科学文化素质自我评价100字左右

科学文化素质自我评价100字,科学文化素质自我评价100字左右

sl913

sl913

歌手王轼心-60,王轼,字用敬,公安人翻译

歌手王轼心-60,王轼,字用敬,公安人翻译

homeassistant安卓安装

homeassistant安卓安装

mac恢复失败2102F,mac恢复失败1008f

mac恢复失败2102F,mac恢复失败1008f

lw/301医院门诊大楼,301医院门诊大楼哪年建成

lw/301医院门诊大楼,301医院门诊大楼哪年建成

国际航班最晚值机时间,国际航班一般什么时候停止值机

国际航班最晚值机时间,国际航班一般什么时候停止值机

斐讯k3最稳定的固件,斐讯k3最稳定的固件是什么

斐讯k3最稳定的固件,斐讯k3最稳定的固件是什么