【发布时间】:2013-07-27 05:29:39
【问题描述】:
起初我猜 k1 的值不会在主空间中。但是后来我意识到一个数组是一个指针,那么有什么区别吗?我认为这是相同的,但也许任何人都可以找到其他一些技术差异。也许更快地传递指针?
#include <iostream>
using namespace std;
void g(double [],int );
void f(double* [],int );
int main()
{
int n = 10;
double *k1, *k2;
k1 = new double[n];
k2 = new double[n];
g(k1,n);
f(&k2,n);
for(int i = 0;i <n;i++)
{
cout << k1[i]<< " ";
cout << k2[i] << endl;
}
delete [] k1;
delete [] k2;
return 0;
}
void g(double h[],int n)
{
for(int i = 0;i <n;i++)
h[i]=i;
}
void f(double* h[],int n)
{
for(int i = 0;i <n;i++)
(*h)[i]=i;
}
【问题讨论】:
-
数组不同于指针,但声明为数组的函数参数实际上是指针。
-
@Nikos:他传递的地址是
double*,而不是double*。 -
实际上它既不需要指向 double 的指针,也不需要指向指向 double 的指针。它需要一个指向不同数组的指针。
-
@BenVoigt 哎呀,确实。
-
@DaleWilson 函数参数中的
[]符号只是指针的语法糖。它不是一个数组。这两个参数都是指向int的指针:int* a和int a[]。