Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这个怎么了?C++;数组指针_C++ - Fatal编程技术网

C++ 这个怎么了?C++;数组指针

C++ 这个怎么了?C++;数组指针,c++,C++,它说: [错误]第9行第5列从“int*”到“int”[-fppermissive]的转换无效 要求我做什么: 制作一个接受10个整数数组的程序,并从整数集中确定最高和最低整数。对最高和最低整数使用指针变量 我所做的: #include<iostream> using namespace std; int main() { int kre_arr[10]; int *kre_p; for(int k = 0; k<=10; k++) {

它说:

[错误]第9行第5列从“int*”到“int”[-fppermissive]的转换无效

要求我做什么:

制作一个接受10个整数数组的程序,并从整数集中确定最高和最低整数。对最高和最低整数使用指针变量

我所做的:

#include<iostream>
using namespace std;
int main()
{
    int kre_arr[10];
    int *kre_p;
    for(int k = 0; k<=10; k++)
        {
            kre_p[k] = &kre_arr[k];
        }
    int j,temp;
    cout<<"Enter 10 Integers: ";
    for (*kre_p=0; *kre_p < 10; *kre_p++)
        {
            cin>>kre_arr[*kre_p];
        }  
    for(*kre_p=0;*kre_p<=10;*kre_p++)
        {
            for(j=*kre_p+1;j<=10;j++)
                {   
                    if(kre_arr[*kre_p] > kre_arr[j])
                        {
                            temp = kre_arr[*kre_p];
                            kre_arr[*kre_p] = kre_arr[j];
                            kre_arr[j] = temp;
                        }
                }
        }
    for(*kre_p=0;*kre_p<=9;*kre_p++)
        {
            cout<<endl<<kre_arr[*kre_p];
        }
}
#包括
使用名称空间std;
int main()
{
int kre_arr[10];
int*kre_p;

对于(int k=0;kkre_p[k]=&kre_arr[k]

kre_arr是数组

kre_arr[k]是整数

&kre_arr[k]是整数地址(类似int*)

kre_p是指针

kre\u p[k]是整数。

因此,您不能直接将int*传递给int。
我猜你想要kre_p+k=&kre_arr[k]

鉴于你的代码状态,我担心你的生命……因此,为了你的整体生存,当然也希望你能学到一些东西:

  • 永远不要使用“using namespace std”。这是一种糟糕的形式

  • 您没有为指针数组(kre_p)分配内存。这肯定会导致程序崩溃

  • 实际上,您不需要指针数组。可以通过数组中的偏移量方便地引用数组元素

  • 你正在做一个看起来像泡泡运动的事情来寻找最低和最高的值。这是非常低效的,而且完全没有必要

C++是一门非常好的语言。当老师们认为他们应该以一种尽可能丑陋的形式教授它时,我感到很困扰。考虑一下:

#include <algorithm>
#include <array>
#include <iostream>

int main () {
    std::cout << "Enter 10 Integers: ";

    std::array<int, 10> kre_arr;
    for (auto &Val : kre_arr)
        std::cin >> Val;

    const int Low = *std::min_element (kre_arr.begin (), kre_arr.end ());
    const int High = *std::max_element (kre_arr.begin (), kre_arr.end ());

    // The assignment calls for pointers, so let's not disappoint.

    const int *LowPtr = &Low;
    const int *HighPtr = &High;
}
#包括
#包括
#包括
int main(){
标准:cout>Val;
const int Low=*std::min_元素(kre_arr.begin(),kre_arr.end());
const int High=*std::max_元素(kre_arr.begin(),kre_arr.end());
//作业需要指针,所以我们不要失望。
常数int*LowPtr=&Low;
常量int*HighPtr=&High;
}

查看要求您执行的操作,我认为您只需确定数组中的最高和最低int,然后指向。您可以对数组进行排序,排序速度较慢

我认为应该是这样的:

#include<iostream>
using namespace std;
int main()
{
    int kre_arr[10];
    int *low;
    int *high;

    cout<<"Enter 10 Integers: ";
    for (int i=0; i < 10; i++)
    {
        cin>>kre_arr[i];
    }

    //determine the lowest
    low=&kre_arr[0];
    for(int i=1;i<10;i++)
    {
       if(kre_arr[i] < *low)
       {
           low=&kre_arr[i];
       }
    }

    //determine the highest
    high=&kre_arr[0];
    for(int i=1;i<10;i++)
    {
       if(kre_arr[i] > *high)
       {
           high=&kre_arr[i];
       }
    }

    cout<<"lowest: "<<*low<<"\nhighest: "<<*high;
}
#包括
使用名称空间std;
int main()
{
int kre_arr[10];
int*低;
int*高;
coutkre_arr[i];
}
//确定最低价格
低=&kre_arr[0];

for(int i=1;i
kre_p[k]
是一个整数,而不是指针。您的代码非常混乱,因此很难按照您的要求执行操作-您希望使用单个指针存储值,还是存储指针数组?如果不至少解决内存分配不足的问题,
kre_p+k=&kre_arr[k]
似乎也是个坏主意。我从来没有这样想过,谢谢。上面写着“确定不做降序”,我误解了它,浪费了我的生命。哈哈,我知道我在这方面很差劲,但我很想得到关于我在编程方面的反馈。嘿,这一切都是为了让我高兴!当我刚开始的时候,我在这方面很差劲。二十多年的努力让我变得更好,这对我来说是件好事与众不同……不管怎样,你确实提到了对你生命的威胁;-)