Как передавать пустой массив через extern С++?
Есть заголовочный файл и 2 cpp файла. Если в заголовочном сделаю
extern double mas[3];
Потом в первом си файле
double mas[3] = {0, 1, 2};
То во втором могу нормально обращаться к элементам. Но если объявлю в заголовочном вот так:
extern double *mas;
Потом в первом в самом начале:
double *mas;
И в одной из функций уже через malloc выделю под него память и заполню. А потом обращусь к функции из второго файла. В этом случае он получается передается незаполненный и не с выделенной памятью под него. Как это правильно сделать, чтобы можно было использовать заполненный во втором файле?
Ответы (1 шт):
Что-то вы говорите, но не договариваете. По вашему описанию:
ext.h
extern double * mas;
1.c
#include <stdlib.h>
#include "ext.h"
double * mas;
void func1()
{
mas = malloc(3*sizeof(double));
mas[0] = (mas[1] = (mas[2] = 3) + 1) + 1;
}
void func2();
int main()
{
func1();
func2();
}
2.c
#include <stdio.h>
#include "ext.h"
void func2()
{
printf("%lf %lf %lf\n",mas[0],mas[1],mas[2]);
}
Скомпилировано VC++ без единого замечания, на выходе
5.000000 4.000000 3.000000
Что я делаю не так?
Что делаете не так вы, сказать не могу, вы же свой код не показываете...