Top.Mail.Ru
Ответы

Помогите разобраться с указателями на языке си

#include
#include
int main(void)
{
FILE* in=fopen("tmp.dat","rt");
double* arr, *tmp;
int n=0, m=2, i;
arr=(double *)malloc(n*sizeof(double));
If (ar=NULL)
{printf("Ошибка при выделении памяти\n")
return 1;
}
while (fscanf(in,"%lf",&arr[n])==1)
{printf("%d\n",n);
n++;
If (n>=m)
{m*=2;
tmp=(double*)realloc(arr,m*sizeof(double));
If (tmp==NULL)
{printf("Ошибка при попытке увеличить массив");
fclose(in);
return 1;
}
arr=tmp;

}
fclose(in);
for (i=0,i<n,++i)
printf("%f",arr[i]);
return 1;
}

Дополнен

1)double* arr, *tmp; Объясните, что мы тут объявили: указатели или разыменованные указатели?
2)arr=(double *)malloc(n*sizeof(double));
tmp=(double*)realloc(arr,m*sizeof(double));
Что означают эти строчки?

По дате
По Рейтингу
Аватар пользователя
Новичок
6лет

Читать конспект и книги
ru.wikipedia.org/wiki/%D0%A3%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
life-prog.ru/view_shpargalki.php?id=31
Сказать то могу, но толку мало, сам когда разберешься, то лучше запомнишь.

Аватар пользователя
Гений
6лет

Нельзя объявить разыменованные указатели. Объявление указателя - это разновидность объявления переменной, просто другой тип данных.
В объявлении double* arr
double* - тип данных
arr - имя переменной.
У переменой tmp тип тоже double*.