C语言:使用malloc开辟一个3*4的二维数组,并将内容初始化为1-12.

方法一:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int(*p)[4] = (int (*)[4])malloc(12 * sizeof(int));//数组指针
    
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            *(*(p + i) +j) = i * 4 + j + 1 ;
        }
    }
    
    for ( i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("%d\t", *(*(p + i) + j));
        }
    }
    
    printf("\n");
    system("pause");
    return 0;
}

方法二:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i = 0;
    int j = 0;
    int **p = (int **)malloc(3 * sizeof(int));
    for (i = 0; i < 3; i++)
    {
        *(p + i) = (int *)malloc(4 * sizeof(int));
    }
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            p[i][j] = 4 * i + j + 1;
        }
    }
    
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("%d ", *(*(p + i) + j));
        }
        
    }
    system("pause");
    return 0;
}
时间: 2024-11-10 01:36:32

C语言:使用malloc开辟一个3*4的二维数组,并将内容初始化为1-12.的相关文章

一个for循环打印二维数组

#include<stdio.h> #define MAXX 2 #define MAXY 3 void printarray() { int Arr[MAXX][MAXY] = {1,2,3,4,5,6}; for(int i = 0;i< MAXX*MAXY;i++) { printf("%d\n",Arr[i/MAXY][i%MAXY]); ///注意,一直没管MAXX什么事,在计算这一类的时候,最容易出问题 } } 一个for循环打印二维数组

c语言中如何通过二级指针来操作二维数组

通过二级指针去访问二维数组需要先给二级指针分配等同于二维数组行数的一维数组指针,然后把二维数组的每行首地址赋值给对应位置的一维指针上.之后就可以通过二维指针直接访问了. 参考代码如下,可以看具体注释辅助理解. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <stdio.h>//输入输出头文件. #include <stdlib.h>//本程序需要用到malloc/free函数,引

C语言编程 子函数中利用指针输出二维数组

一般输出方式:void print1(int arr[][3], int row, int col){int i, j;for (i = 0; i < row; i++){for (j = 0; j < col; j++){printf("%d", arr[i][j]);}printf("\n");}} 指针输出方式:void print2(int arr, int row, int col){int i, j;for (i = 0; i < ro

【经典游戏编程题】C语言:编写一个棋盘游戏,与二维数组结合

#include<stdio.h> #include<stdlib.h> char arr[3][3]; void print() {  int i=0;  for(i=0;i<3;i++)  {   printf("%c|%c|%c|\n",arr[i][0],arr[i][1],arr[i][2]);   printf("_|_|_|\n");  } } void init_arr() {  int i=0;  int j=0;  

PHP二维数组转换成一维数组,一个变量多个二维数组转换成一维数组,PHP二维数组(或任意维数组)转换成一维数组的方法汇总,array_reduce(); array_walk_recursive(); array_map();

方法汇总: 1. array_reduce函数法 //用array_reduce()函数是较为快捷的方法: $result = array_reduce($user, function ($result, $value) { return array_merge($result, array_values($value)); }, array()) 2. array_walk_recursive函数法 //用array_walk_recursive()函数就非常灵活,可以把任意维度的数组转换成一

C语言 二维数组与指针笔记

今天分析了C语言二维数组和指针的基本理解,感觉有点懵...代码记录一下,如果有大神临幸发现哪里有误,欢迎指正~~~ #include <stdio.h> #include <stdlib.h> #include <string.h> //void func(int p[][]) //这样写等同于void func(int **p) p++移动了四个字节,(*p)++移动了四个字节,不符合二维数组规律 //{ //} //列优先输出的函数(即竖着输出) void func

Swift语言学习No.2: 二维数组

之前在教程中学习了二维数组,原本里面很多知识点都不甚了解,后来经过一番资料查找,基本上理解透彻了,做个总结吧. 老规矩,先上代码: class Array2D<T> { let columns: Int let rows: Int var array: Array<T?> init(columns: Int, rows: Int) { self.columns = columns self.rows = rows array = Array<T?>(count:rows

JAVA生成一个二维数组,使中间元素不与相邻的9个元素相等,并限制每一个元素的个数

示例如下 至少需要九个元素:"A","B","C","D","E","F","G","H","I" 我们打印一个30*15的二维数组 刚好限制每一个元素出现50次 I D H A C F E G B E F C B I A G A E D H I B F H G D G H C E D F I B C A C G D B I A

C语言——二维数组

二维数组 一.二维数组的定义 类型名 数组名[ 常量表达式1 ][ 常量表达式2 ] int a[2][2] 二维数组可以看成是矩阵(或表格),常量表达式1可以看成矩阵(表格)的行数,常量表达式2可以看成矩阵(表格)的列数. 二维数组可以看成一个一维数组a[0],a[1],数组中的元素又是一个个一维数组a[0][0],a[0][1]和a[1][0],a[1][1] 在内存中,二维数组站一系列连续的存储单元.存放的顺序是" 按行存放 " 二.二维数组的初始化 1.赋初值个数与数组元素个数