#c
#c
Вопрос:
Я выполняю практические упражнения для своего класса кодирования, и у меня возникли проблемы с пониманием того, как использовать цикл while для суммирования элементов, на которые указывает мой указатель. Я хочу использовать count, чтобы отслеживать, на сколько элементов указывается. Я не очень знаком с указателями, поскольку я только начал изучать их. Любая помощь в понимании того, как это сделать, была бы потрясающей.
(int*)malloc(sizeof(array));
int pointer_sum(int count, int* array){
while (count > 0) {
}
}
Мне нужно использовать арифметику указателя, чтобы суммировать все элементы, на которые указывает мой указатель.
Комментарии:
1. Это не то, как вы используете
malloc
.2. Мне не нужно выделять память для указателя?
3. Это должно было быть сделано до вызова функции. Вы выделяете память (
malloc
) дляarray
, заполняете целыми числами столько, сколькоcount
вarray[0]
…array[count-1]
, и вызываете функцию, подобнуюint resu< result = pointer_sum(count, array)
.
Ответ №1:
Вы знаете начальную точку (указатель!) последовательности целых чисел, и вы знаете длину последовательности с вашей переменной 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;
}
Комментарии:
1. Для меня это имеет смысл, но я не понимаю, как это сделать с помощью цикла while. Когда мы закончим проходить наш тест через пару недель, нам не разрешат использовать цикл for в этой ситуации.
2. хорошо. Я думал, вам нужно каким-то образом сравнить количество с самим массивом внутри параметра while.
3. Проверьте редактирование. И для использования
malloc
(хотя это еще одна проблема, помимо основного вопроса), я думаю, вы могли бы захотеть еще раз взглянуть на примеры из вашего учебника или немного погуглить.4. Большое спасибо за вашу помощь. Я знаю, что это был глупый вопрос, но я думал, что указатели нужно сравнивать каким-то другим способом. Еще раз спасибо!
5. Одна вещь, которая меня смущает, это то, что мы используем программу под названием vocarium для выполнения наших упражнений, и мы пишем код только для самой функции и не пишем main, которая фактически тестирует функцию. Иногда это вызывает у меня некоторое замешательство при выполнении домашних заданий и практических упражнений. Спасибо за помощь.
Ответ №2:
Конечно, похоже, что первый параметр — это размер переданного вами массива, а второй — указатель на этот массив? Предполагая, что это правда, ваш код будет выглядеть примерно так:
int result = 0;
for(int i = 0; i < count; i)
{
result = array[i];
}
return resu<