您需要根據每種情況調整您的使用情況。
第一種情況,您將兩個int按值作爲參數並返回一個int。由於您的參數是按值計算的,因此應用於它們的所有更改都只有函數範圍。
例如:
int returnSomething(int a, int b)
{
a = 0;
b = 0;
return 0;
}
//....
int x = 3;
int y = 4;
returnSomething(a,b);
// x will still be 3, y will still be 4
在第二種情況下,因爲你傳遞參數作爲指針,你將能夠改變這些值。
int returnSomething(int* a, int* b)
{
*a = 0;
*b = 0;
return 0;
}
//....
int x = 3;
int y = 4;
returnSomething(&a,&b);
// x and y will be 0 here
第三種情況,除了通過指針傳遞參數外,還返回一個指向int的指針。這意味着在函數內部,您必須分配內存並在完成時釋放內存。我不建議使用這個,通常有解決方法來做到這一點。
int* returnSomething(int* a, int* b)
{
int* x = malloc(sizeof(int));
*x = 1;
return x;
}
//....
int x = 3;
int y = 4;
int* z = returnSomething(&a,&b);
free(z);
答案是,這取決於你想要做什麼。如果您需要更改方法中的參數值,請按引用或指針傳遞。我不會推薦使用最後一種方法。
此外,這適用,因爲你正在處理POD類型。如果你有自己的結構體,那麼通過指針或者返回一個指針來傳遞它會更高效,因爲不需要創建新的副本。
如果沒有關於要求的更多細節,實在沒有辦法做出決定。 –