指针数组小问题
double inner_product(const double *a, const double *b, int n); a和b都指向长度为n的数组。函数返回a[0]*b[0]+a[1]*b[1]+...+a[n-1]*b[n-1],要求使用指针算术运算而不是取下标来访问数组元素。程序代码:
楼主的本来意图,按要求用指针(换句话说,消除变量i和所有用[]运算符的地方) //double inner_product(const double a[], const double b[], int n) //{ // int sum = 0, i; //for (i = 0; i < n; i++){ // sum = a[i] * b[i]; // sum += sum; // } // return sum; // }
程序代码:
double inner_product(const double *a, const double *b, int n) { int *sum; for (sum = a; sum < n;){ *sum = (*a) * (*b); *sum += *sum; sum++; } return *sum; }
这样写正确吗?
[ 本帖最后由 达尔文 于 2015-9-29 15:45 编辑 ]