我正在处理一个示例,当我运行它时,我的代码停止了woking(请注意,我将该问题翻译为英语,因此对于语法错误感到抱歉。) 这是问题:C指向数组示例的指针停止工作
myShrink()
函数的原型是这样的:
void myShrink(int *param1, const int param2);
myShrink()
功能应该找到阵列param1
的平均然后如果其小于平均应该递增1的元件,还是应该通过递减元件1如果它'超过平均水平。 param2
是数组中的一些元素。
这里是main()
功能的内容:
void myStretch(int *param1, const int param2);
int main() { int myArray[] = {2, 4, 2, 4, 2, 4};
int index;
myStretch(myArray, 6);
printf("UPDATED ARRAY: ");
for(index = 0; index < 6; index++){
printf("%d\t", myArray[index]);
}
return 0;
}
---------结果,当我们运行程序:-----
更新阵列:1 5 1 5 1 5
现在这是问题的一部分,我们需要的是基本上编程的内容myShrink()
函数a nd这里是我的工作:
void myShrink(int *param1, const int param2)
{
int array[param2];
param1=array;//Using pointer to point elements of array
int average=0;
int i,j;
for(i=0;i<param2;i++)
{
average+=*(param1 + i);//Adding each element of array
}
average=average/param2;//Then dividing result to param2 to find average
for(j=0;j<param2;j++)
{
if(*(param1+j)<average)//if below average
{
*(param1+j)+=1;//increment
}
else if(*(param1+j)>average)//if above average
{
*(param1+j)-=1;//decrement
}
}
}
但它停止工作,当我运行它。我犯了什么错误,我该如何解决?
'param1 = param2'会导致你很多很多问题。 –
@MichaelAlbers,我该如何解决它? –
'int array [param2];'(在编译时无法确定大小的数组)是一种常见的编译器扩展,但不是标准的C++。如果你需要这样的东西,可以使用'std :: vector'(但你根本不用'array')。 – aschepler