【C语言】一维数组和二维数组

本文详细介绍了C语言中的一维数组和二维数组的创建、初始化、使用、存储及指针访问。讲解了如何通过数组名访问首地址,以及如何通过指针变量遍历数组元素。同时,对二维数组的初始化方式和使用进行了阐述,强调了数组元素的下标从0开始,且数组在内存中是连续存储的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 解析一维数组的创建和初始化:

创建:创建一维数组时,需有数组类型,数组名,以及数组的大小(可有可无,若没有大小则在初始化时,根据初始化的内容自动分配)。
初始化:数组在使用前必须明确数组的元素已经被赋予确定的值。

初始化可以有以下两种方法:
(1)在数组定义时就赋给数组确定的值;
(2)先给数组一个声明,然后用赋值语句或输入语句给它赋值。

int arr[];arr[4]={1,2,3};//这种初始化是不允许存在的

2. 一维数组的使用
数组元素的引用形式为

数组名[下标]    arr[i]

下标为常量表达式。C语言规定只能逐个引用数组元素,而不能一次引用整个数组 。数组元素的下标从0开始,最后一个元素下标为 sizeof(arr)-1。

3.一维数组的存储
一维数组存储在内存的一个连续的存储区。

4.一维数组的指针访问
在内存中存放的数据都有一个具体的地址,数组也具有具体的地址。数组名表示数组的首地址。指针变量是专门用来存放地址的。

  • 如果指针p指向数组a[20]的第一个元素,那么 p+1 就指向数组的第二个元素,以此类推可知,p+i 指向的是数组的第 i+1 个元素,但指的却是数组 a[i] 的地址,a[i] 也可以用 *(p+i)*(a+i) 表示。

5.二维数组的创建与初始化

二维数组的每个元素具有相同的数据类型。
形式一般为数据类型 数组名[行数常量表达式][列数常量表达式]

二维数组的初始化方法有以下几种:

int arr[5][4];//定义
int arr[3][4] = {{1,2,3},{4,5,6},{7,8,9}};//初始化
  • 按行赋初值;
    int a[3][4] = {{1,2,3},{4,5,6},{7,8,9}};

     // 在没有赋初值的地方,默认为0。
    
  • 按顺序赋初值;
    int a[3][4] = {1,2,3,4,5,6,7};

  • 使用关键字static赋初值 ;

static int a[2][3];//默认所有元素为0
  • 对部分元素赋初值

  • 全部赋值时第一维长度可以略去

  • 通过赋值语句逐个给元素赋值

同样,在二维数组中,
int a[3][4];a[3][4]={1,2,3,4,5,6,7};// 也是不允许的

6.二维数组的使用

二维数组必须先定义后使用,可进行赋值运算,取地址运算,算术运算(加减乘除等)。
可通过下标的方式使用。代码如下:

#include<stdio.h>
int main()
{
    int arr[3][2] = {0};
    int i;
    int *p = &arr[0][0];//指针指向二维数组的首元素
    for (i = 0; i < 3*4; i++)
    {
        p[i] = i;
    }
    for (i = 0; i < 3; i++)
    {
        int j;
        for (j = 0; j < 2; j++)
        {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }

    system("pause");
    return 0;
}

7.二维数组的存储

二维数组在内存中是连续存储的。

8.二维数组的指针访问

二维数组与一维数组大同小异。
如果指针p指向数组a[2][3]的第一个元素,即a[0][0],那么 *(p+1) 就指向数组的第二个元素a[0][1]…….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值