初歩的ですいません

初歩的ですいません

  名前: Year (民意: 14 ) 

 No37-0

 

構造体とポインタが何なのかがわかりません。
どんなときにどう使えばいいのですか?

14
13
1970/01/01(木)09:00

Re:初歩的ですいません

  名前: C# (民意: 16 ) 

 No37-1

弓道

構造体はクラスとほとんど同じで、
ひとつの構造体でメソッド、フィールド、インデクサ、プロバティなどのメンバを定義できます。
クラスとの相違点は、クラスが参照型であるのに対し、構造体は値型である点です。

構造体の使い方の一つとしては、
複数の変数やメソッドをひとつの構造体として定義しておくと、
メソッドやクラスの引数として渡すときに便利です。

たとえば、
a=10;
b=20;
c=30;


z=100;

のようなa〜zまでの変数があり、これらをすべて引数としてメソッドに渡したいときに、メソッドを呼び出すたびに、すべての変数を引数に入力していては大変な手間です。
こういった場合に、ひとつの構造体の中にa〜zまでの変数を定義しておくと、メソッドを呼び出す際は、ひとつの構造体を渡すだけで済みますから、大幅に手間を省略できます。

16
13
1970/01/01(木)09:00

Re:初歩的ですいません

  名前: C# (民意: - ) 

 No37-2

弓道

ポインタは、C言語ではよく使いましたが、C#では使用したことがありません。

ポインタとは、値のアドレス(番地)を入れるための変数のことで、参照型の変数とよく似ています。
C言語では、文字列を操作するための関数がほとんどなかったので、ポインタを使って、検索処理や置換処理などを行っていました。

たとえば、
「おはよう」という文字列があり、
この文字列を格納しているメモリのアドレスが仮に001であったとします。
アドレス001には、「お」が入っています。
アドレス002には、「は」が入っています。
アドレス003には、「よ」が入っています。
アドレス004には、「う」が入っています。

ポインタと呼ばれる変数に、この文字列の先頭アドレス「001」を代入し、
このポインタにアドレスを1つづつ加算していくことによって、次の文字がどんな文字であるのかを順次調べていくことが出来ます。

14
13
1970/01/01(木)09:00