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

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

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

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

【问题讨论】:

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

标签: c++ c pointers matrix notation


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 2021-06-13
    • 1970-01-01
    • 2019-04-30
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多