分配const char *ptr数组参数?c++

assigning const char *ptr to an array parameter? C++

本文关键字:参数 c++ 数组 ptr const char 分配      更新时间:2023-10-16

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

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

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风格的字符串分配给字符数组,或者我相信。我已经找了很多,我只是需要一些澄清。谢谢。

const char *filename = "array.dat";

定义filenameconst char*类型。它不能用作store的参数,因为store需要char []类型。

修改filename的声明为:

char filename[] = "array.dat";

如果store函数不需要更改filename内容,那么它应该是const。函数原型不是很好,你必须做一些变通。将字符串复制到非const数组并传递,或者直接使用非const字符串。

char filename[] = "array.dat";