我有以下功能(我想打印给定行中的所有元素)
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”作为参数?不应该传递地址吗?为什么可以使用间接运算符?
最佳答案
int j[3][3] =
{{1,2,3},
{4,5,6},
{7,8,9}}; // 2d array
auto t1 = j; // int (*t1)[3]
auto t2 = *j; // int *t2
所以发生的事情是 *j
产生 j[0]
,这是一个 int[3]
然后衰减到一个int*
.
关于c++ - 指向二维数组的指针(为什么有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41021866/