double *f(int n, double v)
{
double *a, *p;
a = malloc(n * sizeof(double));
if (a != NULL)
for (p = a; p < a + n; p++)
*p = v;
return a;
}
你能解釋一下這個功能需要什麼嗎?它是否複製n中的v的內容?如果是的話,它爲什麼會返回一個?我真的不明白...先謝謝了。這個C函數有什麼作用?
double *f(int n, double v)
{
double *a, *p;
a = malloc(n * sizeof(double));
if (a != NULL)
for (p = a; p < a + n; p++)
*p = v;
return a;
}
你能解釋一下這個功能需要什麼嗎?它是否複製n中的v的內容?如果是的話,它爲什麼會返回一個?我真的不明白...先謝謝了。這個C函數有什麼作用?
double *f(int n, double v)
{
double *a, *p;
a = malloc(n * sizeof(double)); // allocate memory enough for "n" doubles (an array)
if (a != NULL) // if the allocation was successful
for (p = a; p < a + n; p++) // loop from the beginning of the array to the end
*p = v; // fill every element of the array with the value "v"
return a; // return the new array
}
所以,如果我調用此函數:
double * myarray;
myarray = f(3, 1.3);
現在我有:
myarray[0] = 1.3
myarray[1] = 1.3
myarray[2] = 1.3
因此,要回答你的問題:
你能解釋我這是什麼函數需要什麼?
是否複製n中的v的內容?
v
是一張雙人牀和n
是一個int,甚至不意義。它使數組n
變大,並使用值v
對其進行初始化。如果是,爲什麼會返回?
a
所以你必須在新創建的數組的引用。 (請參閱上面關於如何使用它的示例)如果分配失敗,它返回一個新分配的double
數組,大小爲n
,數值爲v
或NULL
。
這個循環:
for (p = a; p < a + n; p++)
*p = v;
使用指針運算。由於p
是指向double
的指針,因此增加它將指向下一個要寫入的雙精度值。 *p = v
在指定位置寫入double。
它分配一個n
雙精度數組,初始化數組中的每個元素的值爲v
。
該函數返回a
以允許調用者使用這個新分配的數組。
複製的v
n次成浮點
該陣列在功能分配,幷包含n
浮子元件的陣列。
在函數數組a
中的每個元件的端部含有v
作爲值
分配Ñdouble數組在堆中,用v填充並將指針返回給它?
在我看來,我建議在提出這些問題之前先研究一點C。最好的祝願! – Kyrol
有一個無限數量的C函數(誰顯然不知道關於C)可能不理解......爲什麼不把它們全部發布到SO? –