如何通过引用二维数组作为参数 [英] how to pass reference to 2D array as parameter

查看:128
本文介绍了如何通过引用二维数组作为参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有类似不工作,不断抛出指针错误下code。我应该怎么办呢?

 的#include<&stdio.h中GT;
INT垫= {{1,2,3,4},
           {1,4,3,2},
           {9,8,7,6}};诠释的main()
{
  do_something_to_matrix(get_matrix());
}get_matrix()
{
   返回&放大器;垫;
}do_something_to_matrix(中间体矩阵[] [4])
{
  //做一些东西
}


解决方案

一个样本

 的#include<&stdio.h中GT;INT垫[] [4] = {
    {1,2,3,4},
    {1,4,3,2},
    {9,8,7,6}
};空隙do_something_to_matrix(中间体矩阵[] [4]);
INT(* get_matrix(无效))[4];诠释主要(无效){
    do_something_to_matrix(get_matrix());
    返回0;
}INT(* get_matrix(无效))[4] {
    返回垫;
}空隙do_something_to_matrix(中间体矩阵[] [4]){
    //做一些东西
    的printf(%d个\\ N,矩阵[2] [1]); // 8
}

I have code similar to the following which does not work and keeps throwing pointer errors. how should I do it?

#include <stdio.h>
int mat = {{1, 2, 3, 4},
           {1, 4, 3, 2},
           {9, 8, 7, 6}};

int main()
{
  do_something_to_matrix(get_matrix());
}

get_matrix()
{
   return &mat;
}

do_something_to_matrix(int matrix[][4])
{
  //do some stuff
}

解决方案

One sample

#include <stdio.h>

int mat[][4] = {
    {1, 2, 3, 4},
    {1, 4, 3, 2},
    {9, 8, 7, 6}
};

void do_something_to_matrix(int matrix[][4]);
int (*get_matrix(void))[4];

int main(void){
    do_something_to_matrix(get_matrix());
    return 0;
}

int (*get_matrix(void))[4]{
    return mat;
}

void do_something_to_matrix(int matrix[][4]){
    //do some stuff
    printf("%d\n", matrix[2][1]);//8
}

这篇关于如何通过引用二维数组作为参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆