uj5u.com熱心網友回復:
CircleListNode* circleList_Get(CircleLinkList* pList, int pos){
if (pList==NULL||pos<0)
{
cout<<"circleList_Get() paramter is error"<<endl;
return NULL;
}
CircleListNode* pCurrent=(CircleListNode*)&pList->head;
for (int i=0;i<pos;i++)
{
pCurrent=pCurrent->next;
}
CircleListNode* ret=pCurrent->next;//這個回傳的是臨時變數嗎?
return ret;
}
上面的代碼回傳的是臨時變數嗎?
uj5u.com熱心網友回復:
不是,ret指向的記憶體空間并不是在函式體中開辟的堆疊空間(即區域變數)不知道樓主具體想明白什么
uj5u.com熱心網友回復:
我覺得不是臨時變數uj5u.com熱心網友回復:
樓主, 不是覺得不是,就不是,我可以肯定回答uj5u.com熱心網友回復:
那這樣寫代碼不好,我改怎么寫,是new一個指標嗎,用完之后再洗掉,這樣是不是很麻煩uj5u.com熱心網友回復:
樓主是想獲得某個節點的資料嗎?如果只是訪問資料,而不對回傳的節點進行更改操作的話,這樣寫就可以了,而且執行效率高
如果不能保證對回傳的指標資料是否會修改,可以不要采用指標,定義一個變通變數將指標資料拷貝一份,再回傳一個非指標的節點就行
uj5u.com熱心網友回復:
CircleListNode* ret=pCurrent->next;//這個回傳的是臨時變數嗎?return ret;
和回傳pCurrent->next是一樣的
等于下面代碼
return pCurrent->next;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95792.html
標籤:基礎類
