<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/yu2ww88/">
    <title>yu2ww88 @ ウィキ</title>
    <link>http://w.atwiki.jp/yu2ww88/</link>
    <atom:link href="https://w.atwiki.jp/yu2ww88/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>yu2ww88 @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2010-12-11T16:35:58+09:00</dc:date>
    <utime>1292052958</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yu2ww88/pages/1.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/21.html">
    <title>構造体メンバ</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/21.html</link>
    <description>
      #contents()
*構造体メンバ
**ポインタ
[[構造体]]メンバにポインタを指定するときは、宣言時に指し示す先のオブジェクトの型を宣言しておかなければならない。
e.g.「char *p_name」
**構造体で構造体を指定
 struct ten {
      int po[3];
      double ave;
      }
 struct kekka {
      int bango;
      struct ten s1;  ←構造体
 };
**ビットフィールドの利用
 #include&lt;stdio.h&gt;
 #define MEN 0
 #define WOMEN 1
 #define M 1
 #define T 2  ←2進数で四桁のどこに1があるか判別。
 #define S 4
 #define H 8
 main()
 {
   struct kojin_data{
     int bango;
     char *name;
     unsigned int seibetu:1; ←ビットフィールドの宣言（1桁）
     unsigned int nengou:4;　（4桁）
     unsigned int nen;
     unsigned int tuki;
     unsigned int hi;
    }x1={1001,&quot;Aoyama&quot;,MEN,S,31,4,26};
 
   printf(&quot;bango  %4d\n&quot;,x1.bango);
   printf(&quot;name %s\n&quot;,x1.name);
   if(x1.seibetu == MEN) printf(&quot;seibetu MEN\n&quot;);
   else                  printf(&quot;seibetu WOMEN\n&quot;);
   printf(&quot;birthday &quot;);
   if     (x1.nengou == M)  printf(&quot;M.&quot;);
   else if(x1.nengou == T)  printf(&quot;T.&quot;);
   else if(x1.nengou == S)  printf(&quot;S.&quot;);
   else if(x1.nengou == H)  printf(&quot;H.&quot;);
   printf(&quot;%2d.%2d.%2d\n&quot;,x1.nen,x1.tuki,x1.hi);
 }
***ポインタを介したメンバの指定
 #include &lt;stdio.h&gt;
 int main()
 {
 	struct kekka {
 	int bango;
 	char *p_name;
 	double ave;
 	char hyouka;
 	};
 
 	struct kekka d1={1001,&quot;yamato&quot;,77.67,&#039;B&#039;};
 	
 	struct kekka *p_d1;
 
 	p_d1=&amp;d1;
 	
 	printf(&quot;bango   name   heikin   hyouka\n&quot;);
 	printf(&quot;%4d   %12s   %8.2f   %1c\n&quot;,p_d1-&gt;bango,p_d1-&gt;p_name,p_d1-&gt;ave,p_d1-&gt;hyouka);
 }    </description>
    <dc:date>2010-12-11T16:35:58+09:00</dc:date>
    <utime>1292052958</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/15.html">
    <title>文法編</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/15.html</link>
    <description>
      **プログラミング＜文法編＞
***ポインタ
-[[ポインタ使ってみる&gt;ポインタまとめ]]
-[[関数を使ってみる&gt;関数を使ってみる]]
-[[関数を指すポインタ配列&gt;関数を指すポインタ配列]]
-[[コマンドライン&gt;コマンドライン]]
-[[まとめ問題&gt;ポインタまとめ問題]]
***構造体
-[[構造体基本&gt;構造体]]
-[[構造体メンバ&gt;構造体メンバ]]    </description>
    <dc:date>2010-12-05T23:49:45+09:00</dc:date>
    <utime>1291560585</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/20.html">
    <title>構造体</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/20.html</link>
    <description>
      #contents()
**構造体基本文法
***構造体の宣言
 struct タグ {
        型　メンバ名;
          ：
  　　　　：
        };
ただしこれだけでは変数名が含まれず、メモリが割り当てられないため、変数名を宣言する。
 struct タグ 変数名;

またこれらは一度に記述することもでき、
 struct タグ {
        型　メンバ名;
          ：
  　　　　：
        }変数名;
とすることもできる。 初期化するときは並び順に行列のようにおこなえる。
 struct タグ 変数名 = {x,12,26,s,444};　//括弧内は一例

構造体内の特定のメンバを指定したいときは、
 変数名.メンバ名
と記述する。
両辺の構造体の型が同一ならば、変数名＝変数名　とすることで構造体全体の値をコピーすることができる。
***型の定義
また構造体はその特性上記述が長くなる傾向がある。その場合は「typedef」を利用するとすっきりとする。
 typedef 型　識別子;
これで識別子は型と同義となる。つまり、型(int,double...)の代わりに今名付けた識別子を利用することができる。
 typedef struct rei {
                :
                :
      }HAGANAI;
 HAGANAI x = {0,0,0,0,0}
 HAGANAI y = {1,1,1,1,1}
のようにスマートに書ける。    </description>
    <dc:date>2010-12-05T22:21:37+09:00</dc:date>
    <utime>1291555297</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/19.html">
    <title>ポインタまとめ問題</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/19.html</link>
    <description>
      　プログラム起動時に入力された複数個のプログラム仮引数の文字数(&#039;\0&#039;除く)を数え、例のように文字列と共に表示するプログラムを作成せよ。
　なお、プログラムは次の2つの関数を含めること。
1. 文字数を数える関数
　1つの文字列へのポインタを受け取り、文字数を返す。
2. 文字列を表示する関数
　1つの文字列へのポインタを受け取り、これを表示する。

★表示例
 n = 5  tokyo
 n = 9  shinbashi
 n = 9  shinagawa
 n = 8  kawasaki
 n = 8  yokohama

★解答
 #include &lt;stdio.h&gt;
 int cal_char(char *);
 void char_print(char *,int);
 
 int main(int argc,char **argv)
 {
 	int n;
 	for(argv++;*argv != NULL; argv++){
 		n = cal_char(*argv);
 		char_print(*argv,n);
 	}
 }
 
 int cal_char(char *pa)
 {
 	int i;
 
 	for(i=0;*pa != &#039;\0&#039;; i++,pa++); //文字列の最後にはナル「\0」が入るのでこれは数えない
 	return i;
 }
 
 void char_print(char* pa,int n)
 {
 	printf(&quot;n = %2d   %s\n&quot;,n,pa);
 }

&quot;**argv　　　//+1しておいて、次がNULLじゃないか確認。&quot;
↓
&quot;*argv　　　//argvが空っぽだとNULLを返す。&quot;
↓
&quot;argv　　　//実際にchar配列が入っている。文字列の最後には\0が存在。&quot;    </description>
    <dc:date>2010-12-04T22:00:11+09:00</dc:date>
    <utime>1291467611</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/18.html">
    <title>コマンドライン</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/18.html</link>
    <description>
      起動時に受け渡されたプログラム仮引数を１つずつ関数内で表示するプログラム。

 #include &lt;stdio.h&gt;
 void print_param(char*);
 
 main(ing argc, char** argv)
 {
    printf(&quot;argc = %d\n\n&quot;,argc);
    for(argv++;*argv != NULL;argv++) print_param(*argv);
 }
 void print_param(char* pa)
 {
   printf(&quot;%s\n&quot;,pa);
 }

★プログラムの起動
printp tokyo shinbashi shinagawa kawasaki yokohama

★実行結果
 argc = 6
 
 tokyo
 shinbashi
 shinagawa
 kawasaki
 yokohama    </description>
    <dc:date>2010-12-04T21:15:55+09:00</dc:date>
    <utime>1291464955</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/16.html">
    <title>関数を使ってみる</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/16.html</link>
    <description>
      *問題

三人分の四科目の得点の平均を求め、これをもとに四段階の評価を決定して学生番号と共に表示するプログラム。
|番号|国語|算数|理科|社会|
|1001|95|83|45|56|
|1002|25|36|66|48|
|1003|89|80|79|90|

評価は A&gt;80&gt;B&gt;70&gt;C&gt;60&gt;D とする。


*解答例
 #include &lt;stdio.h&gt;
 #define NINZU 3
 #define KAMOKU 4
 
 double get_ave(int*);
 void get_hyouka(double,char*);
 void print_data(int,int*,double,char);
 
 main()
 {
    int bango[NINZU]={1001,1002,1003};
    int ten[KAMOKU]={95,83,45,56},{25,36,66,48},{89,80,79,90};
    double ave[NINZU]={0.0,0.0,0.0};
    char hyouka[NINZU];
    int i;
 
    printf(&quot; No. kokugo sansu rika syakai heikin hyouka\n&quot;);
    for(i=0;i&lt;NINZU;i++){
         ave[i]=get_ave(ten[i]);
         get_hyouka(ave[i],&amp;hyouka[i]);
         print_data(bango[i],ten[i],ave[i],hyouka[i]);
    }
 }
 
 double get_ave(int* p_ten) &amp;color(red){//渡されたten[i]をint* p_ten として受けている。}
 {
   int j;
   double ave=0.0;
 
   for(j=0;j&lt;KAMOKU;j++) ave=ave+*p_ten;
   ave = ave / KAMOKI;
 
   return(ave);
 }
 
 void get_hyouka(double ave,char* p_hyouka)
 {
   if  (ave&lt;60.0) *p_hyouka=&#039;D&#039;;
   else if  (ave&lt;70.0) *p_hyouka=&#039;C&#039;;
   else if  (ave&lt;80.0) *p_hyouka=&#039;B&#039;;
   else   *p_hyouka=&#039;A&#039;;
 }
 
 void print_data(int bango,int* p_ten,double ave,char hyouka)
 {
   int i;
 
   printf(&quot;%4d&quot;,bango);
   for (i=0;i&lt;KAMOKU;i++) printf(&quot;  %4d&quot;,*p_ten++); &amp;color(red){//tenを表示したあと、次のtenへ移動。}
   printf(&quot;   %8.2f   %1c\n&quot;,ave,hyouka);
 }    </description>
    <dc:date>2010-12-03T23:30:51+09:00</dc:date>
    <utime>1291386651</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/17.html">
    <title>関数を指すポインタ配列</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/17.html</link>
    <description>
      **関数を指すポインタ配列

2つのint型配列に対し、加算・減算・乗算・除算を行う関数をそれぞれ用意し、そのアドレスをポインタ配列に設定しておく。

 #include &lt;stdio.h&gt;
 int add(int x,int y);
 int sub(int x,int y);
 int mul(int x,int y);
 int div(int x,int y);
 
 main()
 {
   int (*p_op[4])(int x,int y);
   int x=10,y=3,z;
   int i;
 
   p_op[0] = add;
   p_op[1] = sub;
   p_op[2] = mul;
   p_op[3] = div;
 
   printf(&quot;x=%3d  y=%3d\n&quot;,x,y);
   for (i=0;i&lt;4;i++){
        z=(*p_op[i])(x,y);
        printf(&quot;    z=%4d\n&quot;,z);
        }
 }
 
 int add(int x,int y)
 {
   return x+y;
 }
 
 int sub(int x,int y)
 {
   return x-y;
 }
  int mul(int x,int y)
 {
   return x*y;
 }
  int div(int x,int y)
 {
   return x/y;
 }    </description>
    <dc:date>2010-12-02T04:01:08+09:00</dc:date>
    <utime>1291230068</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/2.html</link>
    <description>
      **プログラミング
-[[文法編&gt;文法編]]
-[[参考になるwebサイト&gt;参考になるwebサイト]]


----


// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


**更新履歴
#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2010-12-02T02:22:44+09:00</dc:date>
    <utime>1291224164</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/14.html">
    <title>ポインタまとめ</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/14.html</link>
    <description>
      ***「int *pointa」と書くよりも、「int* pointa」と書く方が良い。
理由として……
+ int *ptr; と書くと、int型の変数 *ptr に見える
+ int* という型が、int型変数のアドレスを入れるための型だと思うと分かりやすい    </description>
    <dc:date>2010-12-01T23:30:42+09:00</dc:date>
    <utime>1291213842</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yu2ww88/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/yu2ww88/pages/1.html</link>
    <description>
      **@wiki    </description>
    <dc:date>2010-12-01T23:21:27+09:00</dc:date>
    <utime>1291213287</utime>
  </item>
  </rdf:RDF>
