2016-03-20 58 views
-7

它说:这个怎么了? C++数组指针

[错误]从 '诠释*' 的无效转换到 '廉政'[-fpermissive]第9行山坳5.

什么问我来做:

做一个程序,将接受数组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]; 
     } 
} 

代码添加指针之前,我做了我不似乎明白指针那么多。

#include<iostream> 
 
using namespace std; 
 
int main() 
 
{ 
 
    int kre_arr[10]; 
 
    int *kre_p; 
 
    int i,j,temp; 
 
    cout<<"Enter 10 Integers: "; 
 
    for (int i=0; i < 10; i++) 
 
\t { 
 
    cin>>kre_arr[i]; 
 
\t } 
 
\t for(i=0;i<=10;i++) 
 
\t { 
 
    for(j=i+1;j<=10;j++) 
 
    { \t 
 
    if(kre_arr[i] > kre_arr[j]) 
 
    { 
 
     temp = kre_arr[i]; 
 
     kre_arr[i] = kre_arr[j]; 
 
     kre_arr[j] = temp; 
 
     } 
 
    } 
 
} 
 
    for(i=0;i<=9;i++) 
 
    { 
 
    cout<<endl<<kre_arr[i]; 
 
    } 
 
     } 
 
\t

+2

这是功课? – Martin

+1

'kre_p [k]'是一个整数,而不是指针。你的代码是相当混乱的,所以很难遵循你想要做的事情 - 你想用一个指针存储你的值,还是存储一个指针数组? –

回答

0

看看你被要求做什么我认为你只需要确定数组中的最高和最低的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; 
} 
+0

我从来没有这样想过,谢谢。它说,决定不降序,我误解了它,fek我的生活。 –

0

kre_p [K] = & kre_arr [K];

kre_arr是数组。

kre_arr [k]是整数。

& kre_arr [k]为整数地址(类似于INT *)

kre_p是指针。

kre_p [k]是整数。

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

+0

如果没有至少解决内存分配的问题,'kre_p + k =&kre_arr [k]'似乎也不是一个好主意。 –

0

鉴于你的代码的状态,我担心你的生活......所以,为了你的整体生存,当然希望你会学习东西:

  • 不要使用'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; 
} 
+0

大声笑,我知道我吮吸在它,但ty如何我在编程方面的反馈意见。 –

+0

嘿,所有的意思都很好!当我刚开始的时候,我对它不屑一顾。二十多年努力变得更好确实有所作为......无论如何,你确实提到了对你生命的威胁;-) –