我正在尝试编写一个将数组的每个元素平方的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]并使用未屏蔽的指针对其进行平方
答案 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);