首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数组传递到函数(C)

问将数组传递到函数(C)
EN

Stack Overflow用户
提问于 2018-04-10 05:18:47
回答 2查看 66关注 0票数 1

我编写了一个函数来旋转一个数组,我检查了它,当代码在一个块中时工作,即所有的代码都用main()编码,但是当我将代码除以以便在另一个函数下进行旋转时,我无法让它工作(它截断而不是旋转)。我很确定这和数组指针有关。

抱歉,完蛋了

请帮助:

代码语言:javascript
复制
#include<stdio.h>
void rotate(int *arr,int length);
int main()
 {
 // this code creates an array via input
 int length;
 int i;
 int num;
    printf("enter length of array\n");
    scanf("%d",&length);
 int arr[length];
 for (i=0;i<length;i++) {
    printf("enter number\n");
    scanf("%d",&num);
    arr[i]=num;
 }
     // just prints original
    for(i=0;i<length;i++){
    printf("original arr[%d]=%d\n",i,arr[i]);

    }


 //runs rotate function

 rotate(arr,length);

 return 0;
 }

//the rotate function inputs rotation amount and uses nested for loop to 
execute
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;
            printf("rotated arr[%d] = %d\n",i,arr[i]);
    }


    }

我的输出如下:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-10 05:31:15

在C中,您需要在" main“函数之前声明函数,或者在main函数之上执行声明和定义。同时,请分享您的错误信息,以获得帮助。

此外,在C语言中,您不能真正创建这样的动态数组(即获取一个整数值,然后使用它定义数组的大小"int array整数“是错误的,如果在运行时给出整数的值)

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

票数 0
EN

Stack Overflow用户

发布于 2018-04-10 06:08:40

据我所知,问题是在循环内部的旋转方法中的最后一次打印语句中。

您必须再次遍历整个数组,以打印旋转的数组。就像这样。

代码语言:javascript
复制
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中的顶部定义函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49745839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档