This question already has answers here:
Closed 8 months ago.
What is array decaying?
(9个答案)
Is an array name a pointer?
(9个答案)
在我的主函数中有一个双数组:
并进行函数调用:
我的职能:
所以我的问题是,&ary1D[0]和&ary1D之间的区别是什么。如果我用&ary1D调用函数,编译器会给我一个错误。但是参数&ary1D是数组的第一个地址,就像&ary1D[0]。
我可以更改函数的参数列表吗
表达式
现在,两个指针都指向同一个位置,但是正如您所看到的,它们的类型非常不同。如果一个函数需要一种类型,而您给出了另一种类型,则可能会导致错误。
(9个答案)
Is an array name a pointer?
(9个答案)
在我的主函数中有一个双数组:
double ary1D[4] = {1.1, 2.2, 3.3, 4.4};
并进行函数调用:
print1D_A(&ary1D[0],Num);
我的职能:
void print1D_A(double *ary1D, int Num);
所以我的问题是,&ary1D[0]和&ary1D之间的区别是什么。如果我用&ary1D调用函数,编译器会给我一个错误。但是参数&ary1D是数组的第一个地址,就像&ary1D[0]。
我可以更改函数的参数列表吗
print1D_A(&ary1D,Num);
最佳答案
表达式&ary1D[0]
是指向ary1D
的第一个元素的指针。它的类型是double*
。这也是plainary1D
衰变的原因,所以您可以
print1D_A(ary1D,Num);
表达式
&ary1D
是指向数组的指针。它的类型是double (*)[4]
。现在,两个指针都指向同一个位置,但是正如您所看到的,它们的类型非常不同。如果一个函数需要一种类型,而您给出了另一种类型,则可能会导致错误。
09-04 18:10