ポインター変数を変更する関数
提供されたコードには、ポインター変数 targetBubble を変更しようとする関数 clickOnBubble が含まれています。ただし、関数内で行われた変更は呼び出し元のスコープには反映されません。これは、関数がポインタへの参照ではなく、ポインタのコピーを渡しているためです。
関数内からポインタ変数を変更するには、ポインタへの参照またはポインタへのポインタを利用する必要があります。
オプション 1: ポインターへの参照
このアプローチでは、ポインターへの参照が渡されます。関数への引数として:
void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble *&targetBubble) { targetBubble = bubbles[i]; }
この参照により、関数は targetBubble ポインターの値を直接変更し、呼び出し元のスコープ内の元の変数に影響を与えることができます。
オプション2: ポインタからポインタ
または、ポインタからポインタは次のようにすることもできます。 used:
void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble **targetBubble) { *targetBubble = bubbles[i]; }
この場合、関数は targetBubble ポインターへのポインターを受け取ります。ポインター (*targetBubble) が指す値を変更すると、呼び出し元のスコープ内の元の targetBubble ポインターが間接的に変更されます。
以上がC の関数内からポインタ変数を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。