[英]Code with pointers gives out 1 no matter what I tried c++
所以我正在做一个总结字段所有元素的代码,但我必须使用指针:(无论我尝试什么,我都会得到 1 作为 output。用乘法尝试了相同的代码,但仍然没有......代码:
#include <iostream>
#include <cmath>
using namespace std;
float vrat=0;
int suma (int pok2, int vel22){
for(int z=0; z<vel22; z++){
vrat+=pok2;
}
return vrat;
}
int main()
{
/// 2. zadatak
int vel2;
int *vel22=&vel2;
cout<<"Unesi broj elemenata koje hoces upisati"<<endl;
cin>>vel2;
int polje2[vel2];
cout<<"Kreni unosit elemente "<<endl;
for(int z=0; z<vel2; z++){
cin>>polje2[z];
}
int *pok2=&polje2[vel2];
suma(*pok2, *vel22);
cout<<"Suma elemenata je "<<suma<<endl;
return 0;
}
谢谢!
啊! 看起来最后你打印的是 function suma
而不是结果。 试试这个:
int result = suma(*pok2, *vel22);
cout<<"Suma elemenata je "<< result <<endl;
我不确定为什么打印 function 会导致“1”,但打印实际结果应该可以在这里工作。
我想你打算做这样的事情
#include <iostream>
#include <cmath>
using namespace std;
float vrat=0;
int suma (int *pok2, int vel22){
for(int z=0; z<vel22; z++, pok2++){
vrat+=*pok2;
}
return vrat;
}
int main()
{
/// 2. zadatak
int vel2;
int *vel22=&vel2;
cout<<"Unesi broj elemenata koje hoces upisati"<<endl;
cin>>vel2;
int polje2[vel2];
cout<<"Kreni unosit elemente "<<endl;
for(int z=0; z<vel2; z++){
cin>>polje2[z];
}
int *pok2= polje2;
suma(pok2, *vel22);
cout<<"Suma elemenata je "<< vrat << endl;
return 0;
}
这条线
int *pok2=&polje2[vel2];
尝试在 polje2 范围之外访问 memory。 请记住 arrays 是零索引的。 如果这不是你打算做的,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.