Я только начинаю изучать C ++ на Code :: Blocks и выполняю упражнение с динамическим распределением памяти с помощью операторов new и delete.Основная функция позволяет пользователю запрашивать память для нескольких элементов, а затем назначать значения этим элементам / ячейкам памяти.Я хотел создать отдельную функцию void sum (int pntsize, int * pnt), которая при вызове позволяет пользователю найти сумму назначенных значений.Поскольку значения присваиваются через указатели, у меня возникают проблемы при создании этой функции.Когда я иду, чтобы скомпилировать программу, ошибок нет.Однако, независимо от того, какие значения введены или количество созданных элементов, сумма всегда возвращается как 1. Хотя ошибок нет, Code :: Blocks выдает предупреждение о том, что «адрес void sum (int, int *)»всегда будет оцениваться как 'true' [-Waddress] ", и я ожидаю, что это связано с проблемой, с которой я сталкиваюсь.Ниже приведен т
#include <iostream>
using namespace std;
void sum(int pntsize, int* pnt)
{
for(int i=0; i<pntsize; i++)
{
int sum = 0;
sum = *(pnt+i) + sum;
}
cout << "The sum of these values is: " << sum;
}
int main()
{
for (char userinput2 = 'y'; userinput2 == 'y';)
{cout << "For how many elements do you wish to reserve memory?" << endl;
int pntsize = 1;
cin >> pntsize;
cout << endl;
int* pnt = new int [pntsize];
for (int i=0; i<pntsize; i++) //Assigns values
{
cout << "Enter a value for Memory Slot " << i << ": ";
cin >> *(pnt + i);
}
cout << endl;
for (int i2=0; i2<pntsize; i2++) //Displays values
{
cout << "Value at Memory Location " << &(pnt[i2]) << ": " << *(pnt + i2) << endl;
}
cout << endl;
cout << "Do you wish to find the sum of these values?" << endl; //Adds values
char userinput3;
cin >> userinput3;
if (userinput3 == 'y')
sum(pntsize, pnt);
return 0;
}
}
Возможно, предупреждение не имеет ничего общего с моей проблемой, но, возможно, кто-то может объяснить, почему эта проблема продолжает возникать.