【问题标题】:Matrix Printing using Pointers [closed]使用指针的矩阵打印[关闭]
【发布时间】:2013-05-26 21:02:12
【问题描述】:

我被这个问题困住了,我真的需要一些帮助。我有一个功能 void f(int *a, int m, int n) 它应该使用指针打印所有元素。 我试过了

for(i = 0; i < m; ++i)
        for(j = 0; j < n; ++j)
            cout << *((a+i)+j);

但它不会打印正确的元素。请帮我。

在主函数中,我声明矩阵,然后读取元素。

int col, rand, i, j;
    int a[100][100];
    cout << " col = ";
    cin >> col;
    cout << " rand = ";
    cin >> rand;

    for(i = 0; i < rand; ++i)
        for(j = 0; j < col; ++j)
    {
        cout << "a[" << i << "]" << "[" << j << "] = ";
        cin >> *(*(a+i)+j);
    }

当我尝试从主函数打印元素时,一切都很好。

for(i = 0; i < rand; ++i)
        for(j = 0; j < col; ++j)
            cout << *(*(a+i)+j);

f(*a, col, rand); // function calling in the main function

【问题讨论】:

  • a[1] = *(a+1), a[1][2] = *(*(a+1)+2).. 将此应用于您的问题,您会没事的。
  • 它给了我一个错误,无效的类型参数,矩阵像指针一样传递,所以不能像那样访问元素。
  • 您发布的代码也给出了多个错误,因此无法按照您描述的方式访问元素。虽然可以猜测你在说什么,但编程不是猜测。贴一个小而完整的例子,编译运行并演示问题。

标签: c++ function pointers matrix


【解决方案1】:

试试

cout << *(a+i*(p+1)+j);

但我认为以下内容也可以。 (mnrp 之间的关系需要澄清。

for(i = 0; i <= r; ++i)
    for(j = 0; j <= p; ++j)
        cout << *a++;

【讨论】:

  • 对于 1、2、3、4 打印 1 2 0 0,我编辑了第一篇文章,我的错。
  • 请注意,您的函数 cout 语句与您的 main() cout 不同:cout &lt;&lt; *((a+i)+j);cout &lt;&lt; *(*(a+i)+j);。建议您编辑您的帖子以包含更多功能以及您如何调用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多