首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指向矩阵

指向矩阵
EN

Stack Overflow用户
提问于 2011-10-26 04:53:24
回答 2查看 1.2K关注 0票数 0

我想声明一个指针,它指向一个矩阵并从矩阵中检索一个值:

代码语言:javascript
复制
float *p;
float ar[3][3];

[..]//give values to ar[][]

p = ar;

//Keep on printing values in the 3 X 3 matrix
for (int i = 0; i < 10; i++)
{
p = p + i;
cout << *p << ", ";
}
EN

回答 2

Stack Overflow用户

发布于 2011-10-26 05:10:29

我怀疑你是在:

代码语言:javascript
复制
p = &ar[0][0];

这也可以写成:

代码语言:javascript
复制
p = ar[0];

尽管您的for循环需要使用p = p + 1;而不是p = p + i;

如果希望循环能够按行和列访问矩阵的成员,还可以使用指向数组的指针:

代码语言:javascript
复制
float (*p)[3];

p = ar;

for (int i = 0; i < 3; i++)
    for (j = 0; j < 3; j++)
    {
        cout << p[i][j] << ", ";
    }
票数 3
EN

Stack Overflow用户

发布于 2011-10-26 05:28:41

EDIT2:我是个白痴,我无意中得到了float **matrix而不是float (*matrix)[3]。咖啡馆一直都有正确的答案。

这是你想要的吗?

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

void print_matrix(float (*matrix)[3], size_t rows, size_t cols)
{
   int i, j;
   for (i = 0; i < rows; i++)
      for (j = 0; j < cols; j++)
         printf("%f ", matrix[i][j]);
}

int main(void)
{
   float ar[][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
   print_matrix(ar, 3, 3);

   return EXIT_SUCCESS;
}

编辑:您也可以拥有:

代码语言:javascript
复制
float *row1, *row2, *row3;
row1 = ar[0];
row2 = ar[1];
row3 = ar[2];
...
float row1_total = row1[0] + row1[1] + row2[2];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7898849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档