第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

函數(shù)不更改傳遞的指針C+。

函數(shù)不更改傳遞的指針C+。

C++
慕碼人8056858 2019-06-25 15:17:45
函數(shù)不更改傳遞的指針C+。我有我的職責(zé),我正在填補targetBubble在那里,但它不是在調(diào)用這個函數(shù)之后填充的,但是我知道它是在這個函數(shù)中填充的,因為我有輸出代碼。bool clickOnBubble(sf::Vector2i & mousePos, std::vector<Bubble *> bubbles, Bubble * targetBubble) {     targetBubble = bubbles[i];}我像這樣傳遞指針Bubble * targetBubble = NULL;clickOnBubble(mousePos, bubbles, targetBubble);為什么它不起作用?謝謝
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻1863條經(jīng)驗 獲得超2個贊

因為您正在傳遞指針的副本。要更改指針,需要如下所示:

void foo(int **ptr) //pointer to pointer{
    *ptr = new int[10]; //just for example, use RAII in a real world}

void bar(int *& ptr) //reference to pointer (a bit confusing look){
    ptr = new int[10];}


查看完整回答
反對 回復(fù) 2019-06-25
?
郎朗坤

TA貢獻1921條經(jīng)驗 獲得超9個贊

您正在按值傳遞指針。

傳球對指針的引用如果你想更新的話。

bool clickOnBubble(sf::Vector2i& mousePos, std::vector<Bubble *> bubbles, Bubble *& t)


查看完整回答
反對 回復(fù) 2019-06-25
?
慕桂英546537

TA貢獻1848條經(jīng)驗 獲得超10個贊

如果你寫

int b = 0;foo(b);int foo(int a){
  a = 1;}

您不會更改“b”,因為a是b的副本。

如果您想要更改b,則需要傳遞b的地址。

int b = 0;foo(&b);int foo(int *a){
  *a = 1;}

指針也是如此:

int* b = 0;foo(b);int foo(int* a){
  a = malloc(10);  // here you are just changing 
                   // what the copy of b is pointing to, 
                   // not what b is pointing to}

因此,要更改b點的位置以傳遞地址:

int* b = 0;foo(&b);int foo(int** a){
  *a = 1;  // here you changing what b is pointing to}

HTH


查看完整回答
反對 回復(fù) 2019-06-25
  • 3 回答
  • 0 關(guān)注
  • 361 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號