我需要製作一個簡單的程序,使得由第一個數組的sqrt-ed元素構成的新數組成爲可能。我必須在main中編寫新數組的元素。我試圖調試我的代碼,並且變量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 =(雙*)malloc的(長*的sizeof(雙));'是不正確的。這是[不投射malloc的返回值](http://stackoverflow.com/a/954785/817643)的好理由。 – StoryTeller
你不應該這樣做'newArray ++;',你馬上就會失去對你的malloc()'內存的引用,並且你不能再次使用這些元素,除非你備份。 –
@StoryTeller:除了演員陣容外,'malloc()'調用也沒問題。 –