amazon

4.4.11

char型の配列番号が変わってしまう現象


キーボード入力した一文字を取得して、char型配列に格納するプログラムを作っていたのだが、
変数ではなく配列の要素番号が変わってしまう現象が起きた。

#include <iostream>

class Obj{
  private:
    char c[10];
    int i;
  public:
    Obj(void);
    void func(void);
};

Obj::Obj(){
   i = 0;
}

void Obj::func(void){
   std::cout<<"i = "<<i<<std::endl;
   c[i] = 'a';
   std::cout<<"i = "<<i<<std::endl;
}

int main (void ){
   Obj obj;
   obj.func();
   return 0;
}
これを実行すると
$ ./a.out
i = 0
i = 97
となる。
i はいじってないのにと、思ったが、
原因は、char c[]の部分。
これをちゃんとchar c[10]とかにしておけば、よし。

0 件のコメント:

コメントを投稿