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

时间:2016-03-20 08:30:58

标签: c++

它说:

  

[错误]来自' int *'的无效转换到' int' [-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];
        }
}

我在添加指针之前做的代码我似乎并不了解指针那么多。

&#13;
&#13;
#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++)
	{
    cin>>kre_arr[i];
	}  
	for(i=0;i<=10;i++)
	{
  for(j=i+1;j<=10;j++)
  {	
    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];
     }
      }
	
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:0)

kre_p [k] =&amp; kre_arr [k];

kre_arr是数组。

kre_arr [k]是整数。

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

kre_p是指针。

kre_p [k]是整数。

因此,您无法直接将int *传递给int。 我想你想要kre_p + k =&amp; kre_arr [k]

答案 1 :(得分:0)

考虑到你的代码状态,我担心你的生活...所以,为了你的生存,当然希望你能学到一些东西:

  • 永远不要使用'using namespace std'。这是糟糕的形式。

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

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

  • 您正在执行看似是bubbleort的内容以找到最低和最高值。这非常低效,完全没必要。

C ++可以是一个很好的语言。当教师们认为他们应该以尽可能丑陋的形式教学时,这让我感到困扰。考虑:

> curl "https://blog.a1ex.wang" -I
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you\'d like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
[16:53:12] alexwang@alexwang-surbuntu /home/alexwang (60)                           
> curl "https://blog.a1ex.wang" --cacert keys/blog/ca.pem -I
HTTP/1.1 200 OK
Server: nginx/1.9.3 (Ubuntu)
Date: Sun, 20 Mar 2016 08:53:18 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Link: <https://blog.a1ex.wang/wp-json/>; rel="https://api.w.org/"

答案 2 :(得分: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;
}