用指针对每个元素进行平方(C)

时间:2018-10-04 10:22:13

标签: c pointers

我正在尝试编写一个将数组的每个元素平方的C程序:

输入:

 v = {1,2,3}

输出:

 v = {1,4,9}

这是我的C代码:

 #include <stdio.h>
 #include <math.h>


 void squaredVector(int *rowVector[] , int arrayLength);

 int main(void)
 {
    int result;
    int a[] = {1 , 2 , 3};
    result = squaredVector(&a , 3); /* use the address of array a */
    printf("%d" , result);
    return 0;
 }

平方矢量的函数:

 void squaredVector(int *rowVector[] , int arrayLength) 
 {
   int i;
   for(i = 0; i < arrayLength; i++)
   {
      *rowVector[i] = (*rowVector[i]) * (*rowVector[i]);
   }
}

我不太确定该函数在做什么,但是我假设该数组的值将传递给平方向量函数。我认为:

 *rowVector[i] = (*rowVector[i]) * (*rowVector[i]);

正在获取元素a [i]并使用未屏蔽的指针对其进行平方

1 个答案:

答案 0 :(得分:1)

您正在使用一维数组,因此不应该使用

void squaredVector(int *rowVector[] , int arrayLength);  // This is an array of pointers

相反,正确的函数声明是

void squaredVector(int rowVector[] , int arrayLength);   //1D array

OR

void squaredVector(int *rowVector , int arrayLength);   //1D array

在函数内部,for循环应更改为

for(i = 0; i < arrayLength; i++)
{
    rowVector[i] = (rowVector[i]) * (rowVector[i]);
}

通过以下方式调用main函数

result = squaredVector(a , 3);