Мне нужно сделать простую программу, которая делает новый массив, состоящий из элементов sqrt-ed из первого массива. Я должен написать элементы нового массива в основном. Я пытался отлаживать свой код, а переменные x
и y
отображают хорошие числа (я инициализировал их только для того, чтобы я мог наблюдать прогресс на отладчике), но когда я пытаюсь написать элементы моего нового массива, он показывает некоторые странные числа. Может ли какая-то хорошая душа объяснить мне, что я делаю неправильно?C печать значения указателя двойного типа не работает
void returnSqrtArrayt(int* myArray, int length, double** newArray)
{
int i;
double x, y;
double* p;
double* arraySqrt=(double*)malloc(length*sizeof(double));
for(i=0;i<length;i++)
{
x=*myArray;
*arraySqrt=sqrt(x);
y=*arraySqrt;
myArray++;
arraySqrt++;
}
*newArray=arraySqrt;
p=arraySqrt;
for(i=0;i<length;i++)
{
printf("%e\n",*p);
p++;
}
printf("\n");
}
void main()
{
int myArray[5]={4,2,16,4,81};
int length=sizeof(myArray)/sizeof(int);
int i;
double* newArray;
returnSqrtArrayt(myArray, length, &newArray);
for(i=0;i<length;i++)
{
printf("%e\n",*newArray);
newArray++;
}
}
'двойной * arraySqrt = (двойной *) таНос (длина * SizeOf (двойной));' не правильно. Это хорошая причина, чтобы [не отбрасывать возвращаемое значение malloc] (http://stackoverflow.com/a/954785/817643). – StoryTeller
Вы не должны делать 'newArray ++;', вы немедленно потеряете свою ссылку на память, которую вы выберете 'malloc()' ed, и вы не сможете использовать эти элементы снова, если вы не создадите резервную копию , –
@StoryTeller: вызов 'malloc()' отлично, кроме литых. –