分配const char *ptr数组参数?c++
assigning const char *ptr to an array parameter? 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风格的字符串分配给字符数组,或者我相信。我已经找了很多,我只是需要一些澄清。谢谢。
const char *filename = "array.dat";
定义filename
为const char*
类型。它不能用作store
的参数,因为store
需要char []
类型。
修改filename
的声明为:
char filename[] = "array.dat";
如果store
函数不需要更改filename
内容,那么它应该是const
。函数原型不是很好,你必须做一些变通。将字符串复制到非const数组并传递,或者直接使用非const字符串。
char filename[] = "array.dat";
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- 如何将enable-if与模板参数和参数包一起使用