Передача указателя в аргумент функции - PullRequest
0 голосов
/ 06 апреля 2020

Это код функции слияния (просто слияние, а не сортировка слиянием). Скажите, пожалуйста, * почему (аргумент) был использован в аргументе функции, и если я его не использую, он выдаст ошибку ??

void merge(int *a,int s,int e){
    int mid = (s+e)/2;

    int i = s;
    int j = mid+1;
    int k = s;

    int temp[1000];

    while(i<=mid && j<=e){
        if(a[i] < a[j]){
            temp[k++] = a[i++];
        }
        else{
            temp[k++] = a[j++];
        }
    }
    while(i<=mid){
        temp[k++] = a[i++];
    }
    while(j<=e){
        temp[k++]  = a[j++];
    }

    //We need to copy all element to original arrays
    for(int i=s;i<=e;i++){
        a[i] = temp[i];
    }


}

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Проще говоря, если вы не используете указатель, он становится целым числом, но вы ожидаете массив.

Вы также можете использовать '[]' так:

void merge(int a[],int s,int e)
0 голосов
/ 06 апреля 2020

a указывает на массив из int, а не на один. Если вы попытаетесь использовать int a вместо int* a, вы просто передаете одно целое число по значению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...