使用指针符号从矩阵中读取数据

Posted

技术标签:

【中文标题】使用指针符号从矩阵中读取数据【英文标题】:Reading data from a matrix using pointer notation 【发布时间】:2015-09-09 02:22:38 【问题描述】:

我正在尝试创建的程序必须要求用户输入 矩阵 的大小,然后从文件中读取数据以放入所述矩阵。唯一的问题是信息只能用指针输入,只能用指针运算。完整规格如下:

    读取矩阵的维度 提示输入文件名并将该文件中的数据读入矩阵 利用结构数组,其中单个结构保存矩阵中列的平均值、中值和标准差。 您的所有代码都应通过指针和指针算法访问内存位置。

我想知道是否有任何方法可以在不使用数组表示法的情况下调用矩阵中的数据(例如 myArray[0][1])?我一直都知道要使用该符号,并且不了解如何在没有该符号的情况下分离给定数据。任何帮助将不胜感激。

【问题讨论】:

您始终可以使用指针表示法而不是数组表示法。例如,myArray[1] 等价于 *(myArray +1),myArray[0][1] 等价于 *(*(myArray + 0) + 1) 数组不是指针,但它们会欺骗并使用一维数组。访问权限为*(myArray+(row*numColumns+column))。简化簿记。并使矩阵中的读取变得非常容易。 哦,顺便说一句,一旦你剥离了家庭作业部分并开始处理指针和数组问题,这几乎是 ***.com/questions/1641957/… 的副本 【参考方案1】:

您应该尝试动态分配矩阵。这是有关如何执行此操作的示例代码。

#include <stdio.h>
#include <stdlib.h>

int main() 
    int row, col;
    // Get the matrix dimension ...

    int **matrix = (int**) malloc(sizeof(int*) * row);
    for (int i = 0; i < row; i++) 
        matrix[i] = (int*) malloc(sizeof(int) * col);
    

    // Do something with the matrix ...
    // You could still access the matrix with array notation

    for (int i = 0; i < row; i++) 
        free(matrix[i]);
    
    free(matrix);

    return 0;

【讨论】:

以上是关于使用指针符号从矩阵中读取数据的主要内容,如果未能解决你的问题,请参考以下文章

C程序:从文件中读取矩阵数据,并显示出来,利用链式存储结构。

从 Julia 中的文本文件中读取数据矩阵

如何从存储在.csv中的熊猫数据框中读取np矩阵?

Opencv:当使用运算符<<保存为原始数据时,将数据从文件读取到矩阵

02OpenCV数据载入显示与保存

matlab读取txt文件中的数据存为矩阵