2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 динамическое выделение памяти в си
Сообщение14.03.2011, 21:51 
Код:
#include<stdio.h>
#include<locale.h>
#include<malloc.h>
#include<stdlib.h>
#define n 10

int main()
{
float a[n];
int i;
setlocale(LC_ALL,"Russian");
a[i] = (float *)malloc(n*sizeof(float));
printf("введите элементы массива");
for(i=0;i<n;i++)scanf("%f",&a[i]);
printf("массив");
for(i=0;i<n;i++)printf("a[%d]=%f \t",i,a[i]);
return 0;
}


при компиляции выдает: error c2440: '=' : cannot convert from 'float*' to 'float'
подскажите,плиз,в чем ошибка..

 
 
 
 Re: динамическое выделение памяти в си
Сообщение14.03.2011, 22:19 
Аватара пользователя
Код:
#include<stdio.h>
#include<locale.h>
#include<malloc.h>
#include<stdlib.h>
#define n 10

int main()
{
setlocale(LC_ALL,"Russian");
float*a = (float *)malloc(n*sizeof(float));
printf("введите элементы массива");
for(i=0;i<n;i++)scanf("%f",&a[i]);
printf("массив");
for(i=0;i<n;i++)printf("a[%d]=%f \t",i,a[i]);
free(a);
return 0;
}

 
 
 
 
Сообщение14.03.2011, 22:28 
хм..выдает: error c2143:syntax error:missing';'before'type'

 
 
 
 Re: динамическое выделение памяти в си
Сообщение14.03.2011, 22:42 
Аватара пользователя
Код:
#include<stdio.h>
#include<locale.h>
#include<malloc.h>
#include<stdlib.h>

int main()
{
setlocale(LC_ALL,"Russian");
float*a = (float*)malloc(10*sizeof(float));
printf("введите элементы массива");
for(i=0;i<n;i++)scanf("%f",&a[i]);
printf("массив");
for(i=0;i<n;i++)printf("a[%d]=%f \t",i,a[i]);
free(a);
return 0;
}


Попробуйте пробел перед звёздочкой убрать там где (float*) Если не получится, то макрос этот n и 10. И компилятор ведь должен писать на какую именно строку он ругается.

 
 
 
 
Сообщение14.03.2011, 22:48 
Цитата:
Попробуйте пробел перед звёздочкой убрать там где (float*) Если не получится, то макрос этот n и 10. И компилятор ведь должен писать на какую именно строку он ругается.

без результата((
ругается на 11ю,т.е. на
Код:
float*a = (float*)malloc(n*sizeof(float));

 
 
 
 Re: динамическое выделение памяти в си
Сообщение14.03.2011, 22:52 
Вы компилируете как C или C++? В C все определения переменных должны быть в самом начале блока, до остальных операторов, типа вызова функции setlocale().

 
 
 
 
Сообщение14.03.2011, 23:05 
как с

уфф..вроде заработало

Код:
{int i;
float *a;
a= (float*)malloc(n*sizeof(float));


спасибо))

 
 
 
 
Сообщение18.03.2011, 19:41 
Можно еще так, если в плюсах:
Код:
int n;
float *a = new float [n]

 
 
 
 
Сообщение19.03.2011, 11:26 
я так тоже пробовала,но компилятор ругался как и с маллоком, пока не разделила объявление типа *а и собственно выделение памяти.

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group