在将这些指针作为我的getImages函数的参数传递时,我似乎做错了。测试我的代码表明,在函数getImages中,我的指针home和start能够采用适当的值。但是在主要范围内再次测试它们的值都是0.我在下面列出了相关的代码片段。请告诉我如何正确传递这些论点。谢谢。
void getImages(IplImage *home, IplImage *start);
int main(int argc, char **argv)
{
IplImage *home = 0;
IplImage *start = 0;
getImages(home,start);
答案 0 :(得分:2)
您必须通过引用传递指针:
void getImages(IplImage *&home, IplImage *&start);
答案 1 :(得分:0)
指针是保存地址的变量。如果您将指针传递给getImages
,那么您应该取消引用这些指针来访问实际对象。但是,由于您已将home
和start
指针设置为0,因此没有为IplImage
对象分配内存,因此它不存在。因此,derefencing未分配的内存将导致编译器抱怨。
您应该通过引用传递:
void getImages(IplImage &home, IplImage &start)
{
// do something with home
// do something with start
}
int main(int argc, char **argv)
{
IplImage home;
IplImage start;
getImages(home,start);
}
请注意,IplImage
在堆栈上分配了内存,因为引用不能为null,与指针不同,引用需要在使用前分配内存。
希望有所帮助。