我是靠谱客的博主 健康楼房,最近开发中收集的这篇文章主要介绍C语言初学者必看--动态定义二维数组的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先要明白,二维数组本质上也是一维的,二维只是人为想象出的空间感。
其实二维数组a[i][j]的不同之处在于,它的数组名a是一个二级指针,它直接指向一个指针数组(元素都是指针的数组),a中储存的就是该指针数组的首地址,该指针数组里存储的指针按顺序指向每一行元素的首地址。因此,该指针数组的长度,即为二维数组的行数i。
a[i](即*(a+i))访问的是指向第i行的指针,a[i][j](即*(*(a+i)+j))访问的是第i行第j列的元素。
由此我们可以知道,想要动态地初始化一个二维数组的步骤如下:
1.定义一个二级指针a(以整形为例);
2.使这个二级指针指向一个指针数组,即为a分配长为i的指针数组的地址;
3.通过对a[i]的访问,为二维数组的每行元素申请地址,申请的大小由列宽j决定;

#include<Stdlib.h>
#include<stdio.h>
void main(){
    int **a;
    int i=3;
    int j=4;
    int k;
    a = (int **)malloc(i*sizeof(int *));/*为指向每行的指针申请地址*/
    for(i=0;i<3;i++){
       a[i]=(int *)malloc(j*sizeof(int));/*为每行的元素申请地址*/
       for(k=0;k<4;k++)
              a[i][k]=1;/*赋值,以验证是否成功申请*/
    }
    for(i=0;i<3;i++){
		for(j=0;j<4;j++)
			  printf("%d ",a[i][j]);
		printf("n");
	}
}

运行结果如下:
在这里插入图片描述
可见思路与代码无误,大家可以用它来求三行四列的行列式了。

最后

以上就是健康楼房为你收集整理的C语言初学者必看--动态定义二维数组的方法的全部内容,希望文章能够帮你解决C语言初学者必看--动态定义二维数组的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部