将const char * ptr分配给数组参数? C ++

时间:2014-06-13 06:15:22

标签: c++

仅供参考:提供的答案是错误的,我找到了答案,它们写在下面。

在考试题目中,给出了一个函数原型

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数组,或者我相信。我搜索了一下,我只需要清楚一点。感谢。

2 个答案:

答案 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";