【发布时间】:2017-04-22 15:45:24
【问题描述】:
我有以下功能(我想打印给定行中的所有元素)
void print_row(int j, int row_dimension, int *p)
{
p = p + (j * row_dimension);
for(int i = 0; i< row_dimension; i++)
cout<<*(p+i)<< " ";
}
创建一个数组
int j[3][3]={{1,2,3},
{4,5,6},
{7,8,9} };
我不明白的是为什么我可以通过以下方式调用该函数:
print_row(i, 3, *j);
为什么我可以给一个参数 "*j" ?不应该传递地址吗?为什么我可以使用间接运算符?
【问题讨论】:
-
不太清楚问题出在哪里。您正在传递地址并在方法内移动指针
-
代码有效,问题是我不明白为什么(为什么我可以把它称为 print_row(i, 3, *j) - with *j)。
-
auto t1 = j; // int (*t1)[3]和auto t2 = *j; // int *t2 -
@flatmouse 为什么
*j是int*?*j应与*(&j[0])相同,后者应为您提供j[0]。 -
@NathanOliver
*j确实给了你j[0],这是一个int[3],然后衰减为int*
标签: c++ arrays pointers multidimensional-array