c - 如何成功地将二维数组传递给函数?

标签 c arrays

GNU GCC 编译器 这是一个函数:int sumsintriangle(int *a,int n) 其中 a 是 n*n 矩阵。 出于某种目的我添加了

if(*(a+(i+1)*n+(j+1)) > *(a+(i+1)*n+j))

我的代码正常工作的条件;因为条件对于正确的值是正确的。 但对于相同的代码,当我添加

sum=sum + *(a+(i+1)*n+(j+1));

然后它不起作用(例如;假设 sum 最初是 1 而 *(a+(i+1)*n+(j+1) 是 4 )然后求和它应该给我 5..但它给我 1 作为输出...为什么? 甚至,当我调用相同的值 *(a+(i+1)*n+(j+1)) 时在printf函数,只是为了查询,它给我 4(原始值)作为输出...?

为什么会这样,*(a+(i+1)*n+(j+1))printf 正常工作但是当我用 sum 调用它时,它给了我不正确的值?

最佳答案

如果您可以正确发布您的功能,可能会更容易为您提供帮助。但我认为当您在表达式之前添加 * 时会出现错误,这将为您提供该表达式的内容,因此请务必正确获取值。 示例:

      int a[]; //declare an array
      a[n] // will give you the element in position 9 of the array.
      *a // will give you the first element, cause an array can be treated as a pointer (indeed it is).

希望这个回答对你有帮助。如果没有请告诉我。祝你好运!

关于c - 如何成功地将二维数组传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29368935/

相关文章:

c - 使用 lccwin64 编译器链接到 GSL 库

c - 每行代码分配多少内存?

java - 我想在满足条件时更改 PaintComponent() 对象的颜色

arrays - 用于调用 C 函数的 Fortran 接口(interface),该函数返回指向数组的指针

c - 在 C 中初始化二维字符数组

arrays - 如何识别 MATLAB 数组中的断点?

c++ - C/C++ : Write and Read Sockets

c++ - 为什么编译共享库后函数的名称会改变?

php - 文件在 PHP 中乱写

php - 如何从 sql 数据库的一列填充 php 数组?