присвоить const char * ptr параметру массива? Переполнение стека

К вашему сведению: предоставленный ответ был неверным, я нашел ответ, они написаны ниже.

В экзаменационном вопросе был дан прототип функции

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, или, как я полагал. Я искал справедливо, мне просто нужна некоторая ясность в этом. Благодарю.

1

Решение

Линия

const char *filename = "array.dat";

определяет filename быть типом const char*, Его нельзя использовать в качестве аргумента store поскольку store надеется char [] тип.

Изменить объявление filename чтобы:

char filename[] = "array.dat";
3

Другие решения

Если store функция не должна менять filename содержание тогда должно быть const, Прототип функции не очень хорош, и вы должны сделать некоторые обходные пути. Скопируйте строку в неконстантный массив и передайте ее вместо этого или просто используйте неконстантную строку.

char filename[] = "array.dat";
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector