C++ 中数组的"expression must have pointer-to-object type"是什么?

What is "expression must have pointer-to-object type" for arrays in c++?

本文关键字:pointer-to-object type 是什么 have expression 数组 C++ must      更新时间:2023-10-16

我在有关行中评论。对我来说这没什么意义。指"表达必须具有指向对象类型的指针"。我试图使用索引随机数访问我的"项目"数组,但它错误的数组。

#include "stdafx.h"
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <string>
#include <sstream>
#include <stdlib.h>
#include <time.h>

using namespace std;

struct product {
    double price;
} pasta, cookies, candy, chips, pop, bread, eggs;
//struct sales {
//double salepercent;
//} pastasale, cookiesale, candysale, chipsale, popsale, breadsale, eggsale;
double prices[7] = { pasta.price = 3.99, cookies.price = 4.99, candy.price = 
2.99, chips.price = 1.99, bread.price = 3.85, eggs.price = 5.99 };
//double sales[7] = {pastasale.salepercent = 0.30, cookiesale.salepercent = 
0.30, chipsale.salepercent = 0.30, popsale.salepercent = 0.30, 
breadsale.salepercent = 0.30, eggsale.salepercent = 0.30}
double costumer_cart[7] = {};
double subtotal = 0;
double total = 0;
double fillcart(double cart[], double items)
{
    srand(time(NULL));
    for (int i = 0; i < 8; i++)
    {
        cart[i] = items[rand() % 8]; //EXPRESSION MUST HAVE POINTER-TO-
OBJECT TYPE on "items[rand() % 8]"
    }
    cout << "Cart: " << cart;
}

int main()
{
    double fillcart(double costumer_cart, double prices);
    system("PAUSE");
    return 0;
}

在您的fillcart()功能

double fillcart(double cart[], double items)

items是类型double,但您将其用于

cart[i] = items[rand() % 8]; //EXPRESSION MUST HAVE POINTER-TO-

使用数组语法[]的表达式在double上不起作用。在其基本形式中,这样的表达式要求items是指针或数组,而rand() % 8则为积分类型。rand() %8是一个积分类型(好(,但是items是类型double,它既不是指针也不是数组。

cart[i]的使用情况是有效的,因为cart是指指针(当使用数组语法[]用于指定函数参数的类型时,该参数实际上是作为指针传递给函数的(。

>

注意:阵列语法也可以在C 的其他情况下使用,例如使用提供operator[]()的类的实例,但这里也不是这种情况。