アプリ版:「スタンプのみでお礼する」機能のリリースについて

ポインターに配列の場所を伝えて、それから値を取り出したいのですが、別の場所を参照してるためかちゃんと値が帰って来ません
どのように書けば値が帰って来ますか?

~以下ソース~

static int bese_list[10][10];
static int bese_list2[10];

//リスト操作
void list_ope( int *mode1 , int mode2 , int mode3 , int mode4 , int *ud_Counter , bool *num1 ){

  int *p;
  int di1;

  switch( mode2 ){
    case 0: p = &bese_list[ mode3 ][ mode4 ]; break;
    case 1: p = &bese_list2[ mode4 ]; break;
  }
  //~中略~
}

質問者からの補足コメント

  • 使用方法はこんな感じです
    list_ope( &bwt_in2_3_3_ud , 0 , bwt_in2_3_1_sl , bwt_in2_3_2_2_sl , &ud_Counter , &bwt_in2_3_3_ud_sw );

      補足日時:2016/03/07 01:36
  • 1 と 5と 6はこの関数でも操作してる感じですね

      補足日時:2016/03/07 01:43
  • 解決しました
    p を *p にすればいいのですね
    てっきりポインターに配列が入ってないとばかり思ってたのですが、実際はポインターに値を入れたと思ってたのが位置をずらしていただけと勘違いしてました

    >Tacosanさん
    今、違う事がわかりました

    No.3の回答に寄せられた補足コメントです。 補足日時:2016/03/07 03:30
  • switch( *mode1 ){
        case 0:
          *mode1 = - 1;
          *p = 0;
          *num1 = false;
          break;

        case 1:
          *ud_Counter += 1;
          if( *ud_Counter == 17 ){
            *mode1 = - 1;
            *ud_Counter = 0;
            *num1 = false;
            *p -= 1;
          }
          break;

      補足日時:2016/03/07 03:31
  • case 2:
           *ud_Counter -= 1;
           if( *ud_Counter == -17 ){
             *mode1 = - 1;
             *ud_Counter = 0;
             *num1 = false;
             *p += 1;
           }
           break;

         case 3:
           *mode1 = - 1;
           *p = list_num - 24;
           *num1 = false;
           break;
       }

      補足日時:2016/03/07 03:32

A 回答 (3件)

あなたのいう「ちゃんと」がどのようなものなのか, さっぱりわかりません.



どうなってほしいのか, そして現状どう「ダメ」なのかを書いてください.
    • good
    • 0
この回答へのお礼

それはすみません

bese_list[ 0 ][ 1 ] に 値が 2 入っていて、それ以外の値が0 が入ってるのだとしたら 2 を読み込めるようにする場合はどうしたらいいですか?

お礼日時:2016/03/07 00:58

>別の場所を参照してるためかちゃんと値が帰って来ません



というか、そもそもどうやって返しているんですか?
掲示されている関数はvoid型ですよね?
型で見ると第1引数か第5引数で渡されるポインタで指されているところに返しているんですか?
中略になっているので不明です。
# さらに…int *pが必要なんですか??
    • good
    • 0
この回答へのお礼

わかりました
中略の部分を出すとこんな感じです

  switch( *mode1 ){
    case 0:
      *mode1 = - 1;
      p = 0;
      *num1 = false;
      break;

    case 1:
      *ud_Counter += 1;
      if( *ud_Counter == 17 ){
        *mode1 = - 1;
        *ud_Counter = 0;
        *num1 = false;
        p -= 1;
      }
      break;

     case 2:
       *ud_Counter -= 1;
       if( *ud_Counter == -17 ){
         *mode1 = - 1;
         *ud_Counter = 0;
         *num1 = false;
         p += 1;
       }
       break;

     case 3:
       *mode1 = - 1;
       di1 = list_num - 24;
       p = &di1;
       *num1 = false;
       break;
   }

case 0 と case 3 の部分は改良中なのであってるかわかりません
なお中略の部分である p+=1; 等の部分を bese_list[ mode3 ][ mode4 ] += 1; にすると希望通りの動きをしてくれます

お礼日時:2016/03/07 01:32

うぅ~んと....



p = &bese_list[ mode3 ][ mode4 ];
としたとき,
p+=1;

bese_list[ mode3 ][ mode4 ] += 1;
が全く違う意味を持つことは当然理解してますよね?
この回答への補足あり
    • good
    • 0
この回答へのお礼

申し訳ありません
解決したかもありません
少々お待ちを

位置をずらしてたんですね

お礼日時:2016/03/07 03:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!