如何使用指针读取 nxn 矩阵
How to read an nxn matrix using pointers?
我是C++新手,我正在尝试学习指针。作为一项工作练习,我尝试使用指向指针的指针来读取 nxn 矩阵。这是我到目前为止尝试过的,但扫描失败了。我做错了什么?
后期编辑:
int **matrix;
int i=0;
int j=0;
int li=0;
int dim;
printf("What is the dimmension:");
scanf("%d",&dim);
matrix=(int **)malloc(sizeof(int *) * dim);
for(li=0;li<dim;li++)
{
matrix[li] = (int *)malloc(sizeof(int) * dim);
}
printf("Type the elements:n");
for(i=0;i<dim;i++)
{
for(j=0;j<dim;j++)
{
scanf("%d", matrix[i][j]);
}
}
如果你正在使用C++最好这样做
matrix = new int*[dim];
for(int = 0; i < dim; ++i)
matrix[i] = new int[dim];
// to read matrix
scanf("%d", matrix[i][j]);
您有两个(半)主要选项。您可以单独分配每一行,
matrix = malloc(dim * sizeof(int*)); // gives you dim int*
for(i = 0; i < dim; ++i)
{
matrix[i] = malloc(dim * sizeof(int)); // row i gets dim int
}
或者您可以分配一个连续的块
int *array = malloc(dim*dim*sizeof(int));
并通过以下方式访问它
array[i*dim + j];
半个选项是使用打包内存布局,但有一个包装器来访问它,matrix[i][j]
:
int **matrix = malloc(dim*sizeof(int*));
for(i = 0; i < dim; ++i)
{
matrix[i] = array + i*dim;
}
(当然,在C++中,您通常不会malloc
而是使用标准库提供的new
和/或其他类型。
您应该能够像常规 2D 数组一样访问它matrix[i][j]
然后scanf
使用它的位置
scanf("%d", &matrix[i][j]);
编辑时,您还需要分配指针本身:
matrix=(int **)malloc(sizeof(int *) * dim);
for(i = 0; i < dim; i++) {
matrix[i] = (int *)malloc(sizeof(int) * dim);
}
此外,如果这是直接C
则不应从 malloc 强制转换返回类型,因为C
会自动升级它,并且转换可以隐藏错误。
您已分配指针到指针的顶级数组,但未将下一级指针设置为任何已分配的内存。 做一个循环来为每个指针矩阵[i]malloc一个块,或者将每个指针设置为现有的分配内存,然后它可以被scanf使用。
如果您尝试执行指针数组,其中每个指针指向一行,则实际上需要自己为每一行制作指针。 这是代码:
//forM*N (或 N*N)
int **a;
a=malloc(M*sizeof(int *));
for(i=0;i<M;i++)
a[i] = &aa[i][0];
使用该代码,您可以分配一个指向大型 malloc 的指针,然后将 malloc 的一个块分配给每行的第一个元素! 这允许您使用传统的 2D 数组 A[0][0]、A[1][1]、EC 取消引用数组。这是我解释这一点的最佳参考:http://www.eskimo.com/~scs/cclass/int/sx9b.html
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 使用std::vector的OpenCL矩阵乘法
- 使用C++中的模板和运算符重载执行矩阵运算
- Eigen如何在容器循环中干净地附加矩阵
- 当在带有Eigen的C++中使用GDB时,我如何才能看到更多的大矩阵
- 具有N列和N行的矩阵,列必须具有N-1、N-2等值
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- GCC本机矩阵运算库
- 矩阵向量乘法(cublasDgemv)返回零
- 以螺旋方式打印矩阵的程序.(工作不好)
- 如何计算矩阵NxN的行列式?[递归]
- 评估 NxN 矩阵中最大正方形的面积,该矩阵最多包含 K 个(随机放置)
- 按特定顺序遍历 NxN 矩阵的上三角形
- 在Qt中如何为用户创建GUI以输入nxn矩阵
- 如何在Armadillo中创建NXN统一矩阵
- 使用多维数组的递归和动态内存分配来查找 NxN 矩阵的行列式
- 有效的SSE NXN矩阵乘法
- 如何使用指针读取 nxn 矩阵
- cBLAS矩阵乘法调用不适用于1XN和NxN矩阵
- 旋转NxN矩阵计数器(反)-顺时针90度