К вашему сведению: предоставленный ответ был неверным, я нашел ответ, они написаны ниже.
В экзаменационном вопросе был дан прототип функции
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, или, как я полагал. Я искал справедливо, мне просто нужна некоторая ясность в этом. Благодарю.
Линия
const char *filename = "array.dat";
определяет filename
быть типом const char*
, Его нельзя использовать в качестве аргумента store
поскольку store
надеется char []
тип.
Изменить объявление filename
чтобы:
char filename[] = "array.dat";
Если store
функция не должна менять filename
содержание тогда должно быть const
, Прототип функции не очень хорош, и вы должны сделать некоторые обходные пути. Скопируйте строку в неконстантный массив и передайте ее вместо этого или просто используйте неконстантную строку.
char filename[] = "array.dat";