Как суммировать все элементы, на которые указывает указатель, используя цикл while - PullRequest
0 голосов
/ 29 марта 2019

Я выполняю практические упражнения для своего класса кодирования, и у меня возникают проблемы с выяснением того, как использовать цикл while для суммирования элементов, на которые указывает мой указатель.Я хочу использовать счетчик, чтобы отслеживать, сколько элементов указано.Я не очень знаком с указателями, так как только начал изучать их.Любая помощь в понимании того, как это сделать, была бы потрясающей.

(int*)malloc(sizeof(array));
int pointer_sum(int count, int* array){
    while (count > 0) {

    }
}

Мне нужно использовать арифметику указателей для суммирования всех элементов, на которые указывает мой указатель.

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Вы знаете начальную точку ( указатель! ) последовательности целых чисел, и вы знаете длину последовательности с вашей переменной count.Тогда вы можете использовать указатель, как если бы он был действительным массивом .

int pointer_sum(int count, int* array){
    int i, sum = 0;
    for(i = 0; i < count; ++i) {
        sum += array[i];
    }
    return sum;
}

Если вы не собираетесь использовать цикл for, вы должны знать, что каждый цикл forлегко конвертируется в цикл while.

int pointer_sum(int count, int* array){
    int i, sum;

    i = 0;
    sum = 0;
    while(i < count) {
        sum += array[i];
        ++i;
    }
    return sum;
}

Если вам действительно нужно использовать арифметику указателей, вы должны знать, что a[i] работает как *(a+i).

int pointer_sum(int count, int* array){
    int i, sum;

    i = 0;
    sum = 0;
    while(i < count) {
        sum += *(array+i);
        ++i;
    }
    return sum;
}
0 голосов
/ 29 марта 2019

Конечно, похоже, что первый параметр - это размер массива, который вы передали, а второй - указатель на этот массив? Предполагая, что это правда, ваш код будет выглядеть примерно так:

int result = 0;
for(int i = 0; i < count; ++i)
{
    result += array[i];
}
return result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...