ページ 1 / 1
入門レベルの質問
Posted: 2011年4月25日(月) 17:11
by フラッグ
すいません初心者レベルの質問なのですがどこを捜しても載ってないので教えてください
この前、このような
コード:
typedef struct{
int a = 10
int b = 20
}test
コードをコンパイラ君に提出したのですがクラスメンバーを初期化できないとエラーを吐き出されました
構造体の中で数を代入したのがいけないのでしょうか?
それとポインタというものを覚えたのですが
どのサイトを見てもポインタに変数を代入?する方法しか載っておらず
どういったことにポインタを用いればいいのか分かりません
どんなときに使うかの例でもサイトでも構いませんので教えていただけませんか?
Re: 入門レベルの質問
Posted: 2011年4月25日(月) 17:30
by non
ポインタを使う例ですが、どのテキストでも必ずっていいほど使われているのが、
2つの変数の値を交換する関数 swap の例ではないでしょうか?
まずは、この辺から理解されるのがよろしいかと。
Re: 入門レベルの質問
Posted: 2011年4月25日(月) 17:34
by softya(ソフト屋)
C言語だとして答えますが、
フラッグ さんが書きました:コードをコンパイラ君に提出したのですがクラスメンバーを初期化できないとエラーを吐き出されました
構造体の中で数を代入したのがいけないのでしょうか?
エラーは、C++でコンパイルされた様ですね。
C言語でコンパイルすれば別のエラーが出ます。
構造体はあくまで構造の宣言であって実体の宣言では無いので値は代入できません。
コード:
typedef struct{
int a;
int b;
} test_t;
test_t test_d = {0,0};
といった感じで実体を宣言するときに初期値で与えてください。
フラッグ さんが書きました:
それとポインタというものを覚えたのですが
どのサイトを見てもポインタに変数を代入?する方法しか載っておらず
どういったことにポインタを用いればいいのか分かりません
どんなときに使うかの例でもサイトでも構いませんので教えていただけませんか?
必然で言うと、文字列はポインタで無ければいけません。
それと呼び出した関数の先で中身を書き換えて欲しい場合はポインタで渡さないと出来ません。
Re: 入門レベルの質問
Posted: 2011年4月25日(月) 17:42
by たかぎ
フラッグ さんが書きました:
コード:
typedef struct{
int a = 10
int b = 20
}test
コードをコンパイラ君に提出したのですがクラスメンバーを初期化できないとエラーを吐き出されました
構造体の中で数を代入したのがいけないのでしょうか?
C++0xならそんなこともできるわけですが、現時点でこの機能に対応している処理系はなかったように思います。
フラッグ さんが書きました:それとポインタというものを覚えたのですが
どのサイトを見てもポインタに変数を代入?する方法しか載っておらず
どういったことにポインタを用いればいいのか分かりません
どんなときに使うかの例でもサイトでも構いませんので教えていただけませんか?
下記を参照してください。
http://www.kijineko.co.jp/node/482
Re: 入門レベルの質問
Posted: 2011年4月25日(月) 18:20
by フラッグ
もうひとつ教えてもらえませんか?
さきほど、このようなコードを入力したのですが
未定義のシンボルと言われました
コード:
typedef struct{
int x ;
int y ;
char name;
}test;
test test2 = {32,24};
LoadGraphScreen( x , y , "イラスト/戦闘機" , TRUE ) ;
どこがいけないのでしょうか?
Re: 入門レベルの質問
Posted: 2011年4月25日(月) 18:54
by softya(ソフト屋)
x,yは構造体testのメンバですので、実体であるtest2の値を参照する場合は、
LoadGraphScreen( test2.x , test2.y , "イラスト/戦闘機" , TRUE ) ;
と書かないといけません。
参考
↓
「構造体」
http://www9.plala.or.jp/sgwr-t/c/sec15.html
Re: 入門レベルの質問
Posted: 2011年4月25日(月) 18:56
by Suikaba
x,yが宣言されていません。かな?
testという構造体の中で宣言されているので、このコードでは
test2.x, test2.y
とするのがいいかとおもいます。
間違ってたらすいませんw
Re: 入門レベルの質問
Posted: 2011年4月25日(月) 20:19
by フラッグ
お二人さま、ありがとうございました
できました!