将数组传递给函数(C)

时间:2018-04-10 05:18:47

标签: arrays function pointers rotation

我写了一个旋转数组的函数, 我已经检查过,当代码在一个块中时它可以工作。一切 在main()下编码,但是当我划分代码以便在不同的函数下完成旋转时,我无法使其工作(它截断而不是旋转)。 我很确定它与数组指针有关。

抱歉完整的菜鸟

请帮助:

enter length of array
5
enter number
1
enter number
2
enter number
3
enter number
4
enter number
5
original arr[0]=1
original arr[1]=2
original arr[2]=3
original arr[3]=4
original arr[4]=5
by how many do you want to rotate array?
3
rotated arr[4] = 1
rotated arr[4] = 2
rotated arr[4] = 3

RUN FINISHED; exit value 0; real time: 9s; user: 0ms; system: 0ms

我的输出如下:

$users = User::with('roles')->get();

// or
// $users = User::get();
// $users->load('roles');

return response()->json([
    'success' => true,
    'users' => $users,
]);

2 个答案:

答案 0 :(得分:0)

在C中你需要在“main”函数之前声明函数,或者在main函数之上进行声明和定义。另外,请分享您的错误消息,以获取帮助。

另外,在C语言中你无法真正创建那样的动态数组(即取一个整数值,然后使用它来定义数组的大小“int array [integer]”这样做是错误的,如果值为在运行期间给出整数)

阅读http://www.mathcs.emory.edu/~cheung/Courses/255/Syllabus/2-C-adv-data/dyn-array.html或任何其他有关C中动态数组的教程以及如何使用malloc和calloc。

答案 1 :(得分:0)

据我所知,问题出现在循环内旋转方法的最后一个print语句中。

必须再次遍历整个数组才能打印旋转的数组。 像这样。

void rotate(int *arr,int length)
{
int n;
 printf("by how many do you want to rotate array?");
 scanf("%d",&n);
 int i;
 int j;
 int temp;
for (j=0;j<n;j++)
{
        temp=arr[0];
    for (i=0;i<length-1;i++)
    {

        arr[i]=arr[i+1]; 

    }
arr[length-1]=temp;

}

for(i=0;i<length;i++){

  printf("original arr[%d]=%d\n",i,arr[i]);

  }

}

这将有效。

此外,始终在c。

的顶部定义功能