二级指针与二维数组

本文通过一个C语言程序实例介绍了如何使用二级指针访问和遍历二维数组。包括二级指针的定义、内存分配、地址赋值及释放等关键步骤。

#include <stdio.h>//输入输出头文件。

#include <stdlib.h>//本程序需要用到malloc/free函数,引用该头文件。


int main()

{

    int a[3][4] = {1,2,3,4,2,2,3,4,3,2,3,4}; //定义二维数组a,并赋值从1-12.

    int ** p = NULL;//定义二维指针。

    int i, j;

    

    p = (int **)malloc(sizeof(int *) *3);//要访问的数组有三行,所以申请三个一维指针变量。

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

    {

        p[i] = a[i];//将二维数组行地址赋值到对应的一维指针上。

    }

    

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

    {

        for(j = 0; j < 4; j ++)

            printf("%d\n", p[i][j]); //用指针输出元素。p[i][j]这里也可以写作*(*(p+i) + j)。

        //每行输出后加一个换行

    }

    

    free(p);//释放申请的内存。

    

    return 0;

}

该题实现了 将一个二级指针直接变成了指针数组 第一个指针指向了首地址 第二个指针保存了数组3个首地址 从而实现了遍历 *p[i]=a[i]改过程实现了将a的地址给p 将a[i]的地址p[i]的过程











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值