2 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
#include <iostream>
using namespace std ;
int* process(int* arr)
{
int* b = new int[10]; //arr的長度也是10
//int* b = (int *)malloc(sizeof(int)*10);//另一種申請內(nèi)存的方法
for(int i = 0; i<10; i++)
b[i] = *(arr+i) + 1;
return b;
}
int main()
{
int arr[]={0,1,2,3,4,5,6,7,8,9};
int *num;
num = process(arr);
for(int i=0;i<10;i++)
{
printf("%d ",*(num+i));
}
delete[] num;//請注意??!我是在這里釋放內(nèi)存
return 0;
}

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
因?yàn)槟阋祷匦聰?shù)組,所以不能在函數(shù)中把b給delete了。
要delete b的話,你必須在調(diào)用函數(shù)的地方的后面進(jìn)行delete。如果不delete的話就會(huì)造成內(nèi)存泄漏。
如果要避免使用new的話,你可以把一個(gè)數(shù)組傳入函數(shù),然后修改他。
int* process(int* arr, int b[])
{
for(int i = 0; i<10; i++)
b[i] = *(arr+i) + 1;
return b;
}
- 2 回答
- 0 關(guān)注
- 1243 瀏覽
添加回答
舉報(bào)