【发布时间】:2011-09-21 08:37:21
【问题描述】:
我在将参数传递给函数时遇到了一些问题。示例:
#include <iostream>
using namespace std;
struct VShop
{
bool index;
char *fName;
char *edName;
char *genre1;
char *genre2;
double rating;
double price;
};
void AddtoDB (VShop *Film, char *name, char *ed, char *genre1, char *genre2, double rating, double price, int *size, int *element);
int main()
{
int size = 0, element = 0;
VShop *Film = new VShop[size];
AddtoDB(Film, "The Shawshank Redemption", "Frank Darabont", "Crime", "Drama", 9.2, 20, &size, &element);
cout<<size; // ERROR!
return 0;
}
void AddtoDB (VShop *Film, char *name, char *ed, char *genre1, char *genre2, double rating, double price, int *size, int *element)
{
*size++;
Film[*element].fName = name;
Film[*element].edName = ed;
Film[*element].genre1 = genre1;
Film[*element].genre2 = genre2;
Film[*element].rating = rating;
Film[*element].price = price;
*element=(*element+1);
}
每次我想获得size 或element 时都会出错。它会发生什么?谢谢。
【问题讨论】:
-
一个明显的错误是您正在通过
VShop *Film = new VShop[size]创建一个空指针。由于size==0,您根本不分配任何内存(我什至不确定new Foo[0]的定义是否明确)。如果您在任何情况下都使用 C++,为什么不为您的数据库使用向量? -
谢谢,它成功了。只需要重写我的功能。而且我对向量一无所知,因为我刚开始学习 C++。再次感谢。
标签: c++ pointers parameter-passing