仅供参考:提供的答案是错误的,我找到了答案,它们写在下面。
在考试题目中,给出了一个函数原型
void store(double *ptr, unsigned int length, char filename[]);
我们被要求调用此函数以执行操作...(现在与我的问题无关)。
但我们需要传递一个文件名进行阅读。并且它必须由此filename[]
字符数组接收
以下是提供的答案。 (这是前几年的考试)。
#include <iostream>
using namespace std;
#define SIZE 10
int main(void)
{
const char *filename = "array.dat";
double a[SIZE];
for ( unsigned n = 0; n < SIZE; n++ )
a[n] = 0.0;
store(a, SIZE, filename); // if simply send "array.dat" as parameter it works.
return 0;
}
但是,这不会编译给我。在我的脑海里,它也没有编译,因为我不能以这种方式将这样的c风格的字符串分配给char数组,或者我相信。我搜索了一下,我只需要清楚一点。感谢。
答案 0 :(得分:3)
该行
const char *filename = "array.dat";
将filename
定义为const char*
类型。它不能用作store
的参数,因为store
期望char []
类型。
将filename
的声明更改为:
char filename[] = "array.dat";
答案 1 :(得分:2)
如果store
功能不需要更改filename
内容,那么它应该是const
。函数原型不太好,你必须做一些解决方法。将字符串复制到非const数组并传递它,或者只使用非const字符串。
char filename[] = "array.dat";