0

だから私が関数を書くとき

void sort (int oldarray[], int length)
{

//imagine there is a function here that runs a loop and finishes with a sorted:

newarray[];
}

次のようなメイン関数で、newarray[]をoldarray[]に置き換えるにはどうすればよいですか。

int main()
{
int length = 7
int oldarray[length]

//here would be a loop that populates the oldarray

sort(oldarray[], length)

//a loop that prints the newarray[] from the sort or main function
}

参考までに、これは宿題ではありません。私は自分自身を教えているので、あなたは私が彼らの苦労して稼いだお金から教授をだますのを手伝っていません。

4

3 に答える 3

0
void sort (int *oldarray, int length, int *newarray, int *newlength)
{

//imagine there is a function here that runs a loop and finishes with a sorted:

//newarray after sorting can be passed to `main` function - even if the function returns void
// also remember to set the `newlength`
}

int main()
{
  int newlength;
  int *newarray = malloc(7 * sizeof(int));
  int length = 7
  int oldarray[length]

  //here would be a loop that populates the oldarray

  sort(oldarray[], length, newarray, &newlength)

  //a loop that prints the newarray[] from the sort or main function
  free(newarray);
  return 0;
}
于 2013-03-25T19:05:26.903 に答える
0

並べ替えの呼び出しに[]を付けたくない場合:

sort(oldarray, length)

配列(実際には単なるポインター)を渡す代わりに、sort関数から何も返したくない場合は、ポインターをポインターに渡してから、ポインターが指すものを再割り当てします(phew )。そのようです:

int ** pointer_to_arr = &old; //& gives address of old
sort(pointer_to_arr, length);

並べ替え:

sort(int** arr, int len) {
    //you need to malloc the new array if you don't want it
    //to go away on function return:
    int* new_array = (int*) malloc(len*sizeof(int));
    //... sort here into new_array ...
    *arr = new_array; //set arr to the newly sorted array 
}

これで、pointer_to_oldからnew_arrayにアクセスできます。

int* new_array = *pointer_to_arr;
 //... do what you will
//don't forget to release you memory when you're done
free (new_array);
于 2013-03-25T19:07:32.853 に答える
0

以下はAniketの回答に基づいていますが、簡略化されています。

#include <stdio.h>
#include <stdlib.h> 

void sort (int *oldarray, int *newarray, int length)
{
    // do your stuff, and put result in newarray
}

int main()
{
    int length = 7;
    int oldarray[length];
    int newarray[length];

    // here would be a loop that populates the oldarray

    sort(oldarray, newarray, length);

    // a loop that prints the newarray from the sort or main function

    return 0;
}
于 2013-03-25T19:18:49.170 に答える