グローバル変数を引数にする

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
wing
記事: 18
登録日時: 14年前

グローバル変数を引数にする

#1

投稿記事 by wing » 14年前

今、以前に作ったゲームのコードのグローバル変数をすべて
引数にして、グローバル変数をなくそうとしています。
そこで分からないことが出てきました。
分かりやすくサンプルにしてみました。

コード:

#include "DxLib.h"

int counter;
void game_main(int *timer);

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );

		int timer = 0;
        // while( 裏画面を表画面に反映, メッセージ処理, 画面クリア )
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
			game_main(&timer);

			int Color = GetColor(255, 255, 255);
			DrawFormatString(20, 20, Color, "timer   = %3d", timer);
			DrawFormatString(20, 60, Color, "counter = %3d", counter);
        }
        
        DxLib_End(); // DXライブラリ終了処理
        return 0;
}

void game_main(int *timer){
	*timer++;
	counter++;
}
今まではcounterのようにグローバルで宣言していたものをtimerの
ようにしてみました。
しかし、counterは毎フレーム1増えていくのに、timerは0のままです。
ポインターの使い方が間違っているのでしょうか?
どなたか教えていただけないでしょうか?

DxライブラリーとVC++2008EEを使っています。

xxx
記事: 26
登録日時: 14年前

Re: グローバル変数を引数にする

#2

投稿記事 by xxx » 14年前

(*timer)++でどうでしょうか?
演算子の優先順位でアドレスがずれただけになってます

wing
記事: 18
登録日時: 14年前

Re: グローバル変数を引数にする

#3

投稿記事 by wing » 14年前

roxion1377さん。
できました!
ありがとうございました。
たいへん勉強になりました。

wing
記事: 18
登録日時: 14年前

Re: グローバル変数を引数にする

#4

投稿記事 by wing » 14年前

解決を忘れました。

閉鎖

“C言語何でも質問掲示板” へ戻る