繁体   English   中英

无论我尝试什么,带有指针的代码都会给出 1 c++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM