goo blog サービス終了のお知らせ 

ぼんさいメモ

介護用ベッドで考えたり、調べたことのメモです。(妻に感謝)
転載:自由(校正・編集不可)。内容:無保証。

progCP-s%40:ポインタと多次元配列

2016-07-06 17:24:53 | 未削除

@http://blog.goo.ne.jp/bonsai-chat/e/1f50d0455040619c66b87b534956153a
=progCP-s%40:ポインタと多次元配列
/


progCP-s%40:ポインタと多次元配列

次のプログラムを理解できればCのポインタと多次元配列の使い方は卒業です.
・教科書,参考書の復習にお使いください.
%31の第4章からの引用です.
・ぼんさいノートぼんさいノートとその補遺の参照.
Ex4-1.c

 typedef int int_4[4];// for<*set*>
 int m0[8]={123,4,56}, *p0=m0;
 int i=1, k=2, n1=0, n2=0, n3=0;
 int m1[2][4]={{100,101,102,103},
               {110,111,112,113}};
 int m2[4][2]={{200,201},{210,211},
               {220,221},{230,231}};
 int (*p1)[4]=m1, (*p2)[2]=m2; void *q;
 char *p3="HELLO", c='-'; double x=3.125;
 n1=p1; n2=p2; n3=n1-n2; //warning C4047:
 q=&x; p0=(int*)q;
 printf("%s, %x %x\n",
   "■0:", p0[1], p0[0]);
 printf("%s, %d, %d, %d\n",
   "■1:", &m0, &m1, &m2);
 printf("%s, %d, %d, %d, %d\n",
   "■2:", m0, *m0+k, &m0[k], m0[k]);
 printf("%s, %d, %d, %d, %d, %d\n",
   "■3:", m1, (m1+i),(m1[i]), (m1[i]+k),
   &m1[i][k] );
 printf("%s, %d, %d, %d, %d\n",
   "■4:", *m1, *(m1+i), *(m1[i]),
   *(&m1[i][k]), m1[i][k]);
 printf("%s, %d, %d, %d\n",
   "■5:", sizeof(m1), sizeof(m1[i]),
    sizeof(m1[i][k]));
 printf( "%s, %d, %d, %d, %d, %d\n",
   "■6:", p1, p1+i, p1[i], p1[i]+k,
   &p1[i][k]);
 printf( "%s, %d, %d, %d, %d\n",
   "■7:", *&p1,*&p1[i], *&p1[i][k],
   p1[i][k]);
 printf( "%s, %d, %d, %d\n",
   "■8:", sizeof(p1), sizeof(p1[i]),
   sizeof(*&(p1[i][k])),
   sizeof(p1[i][k]));
  <*set*>
 printf("■%c: %d, %d, %d\n",
   c, n1, n2, n3);

『■0:, 40090000 0
■1:, 4062428, 4062316, 4062276
■2:, 4062428, 125, 4062436, 56
■3:, 4062316, 4062332, 4062332, 4062340, 4062340
■4:, 4062316, 4062332, 110, 112
■5:, 32, 16, 4
■6:, 4062316, 4062332, 4062332, 4062340, 4062340
■7:, 4062316, 4062332, 112, 112
■8:, 4, 16, 4
■-: 4062316, 4062276, 40』

  ★ 実行結果は「<*set*>」=「」の場合.
   「*m1!=m1[0][0]」*m1[i]!=m1[i][0]」
「m1[i][k]==p1[i][k]」
「m2[i][k]==p2[i][k]」
  ★ &m2<&m1<&m0 とは限らない(処理系に依存).
  ◆ $type型のデータの配列の擬宣言を
   「`$type[$n] $x;」=「$type $x[$n];」
   と定め,「$x」「$x[i]」の実行文でのエイリアス
   を  「$x`[]」=「$x」「$x`[i]」=「x[i]」
   と定める.
   ◎データを格納するの領域の有無とは無関係に配列要
   素のアドレスを計算できる.
 ★ 0≦「k」<8 でない「&m0[k]」も計算できる.
 ◆ 配列「m0」「m1」の擬宣言は
   「`int[8] m0={123, 4, 56};」
   「`int[4][2] m1={{100,101,102,103},
                    {110,111,112,113}};」
   「*m0`[]」はint[8]型の配列
   「*m1`[i]」はint[4][2]型の配列「m1`[]」の
   「i」番目目の要素であるint[4]型の配列,
   「m1`[i][k]」は「m1`[i]」の「k」番目の要素.
   (■3:)
   「&m0`[]==3603232」「&*m1`[1]==3603136」
  ◆ $type型のデータへのポインタの擬宣言を
   「`$type[] $p;」=「$type *$p;」
   と定める.「$p」がポインタであれば,つねに
    「$p」=「*(&$p)」(「$p」は参照先アドレス)
    「sizeof($p)==sizeof(&□)」
  ◆「$p」があるデータ型の配列へのポインタであると
   き,実行文ではつねに次に定めるエイリアスを用い
   て「$p」が配列へのポインタであることを明示する.
    「$p`[]」=「$p」「$p`[0]」=「*$p」
    「$p`[i]」=「$p[i]」
  ★「(int*) p1;」はエラー(要「typedef」)
  ◆ ポインタ「p0」「p1」の擬宣言は
   「`int[8][] p0=m0;」
    =「`int[4][2][] p1=m1;」
  ★ 「p1」「p1[i]」「p1[i][k]」はアドレス
   「&p1」「&p1[1]」「&p1[i][k]」にあるデータと
    して求める.
   「p1」に「m1」を代入すると
   「*&p1==*m1」
   「*&p1[1]==m1[i]」
   「*&p1[i][k]==m1[i][k]」(■7:)
  ☆「&(p1+i)」「&(p1[i]+k)」を使うとビルドでき
    ない. //error C2102: '&' に左辺値がない
  ◎ ポインタにはデータ型が必須 (データは存在しな
    くてもよい).
  ◎ 任意のアドレスをvoid型のポインタに設定できる
が,使うときにはキャストが必要(■0:).
  ◆ $type型へのキャストの実行文でのエイリアスを
「`($type)$q」=「($type)$q」と定める.
  ★「x」のバイナリデータを「p0[1]」「p0[0]」で
   表示できる.(「p3=(char)q;」で表示しようとす
   ると実行時に文字コードを復号できなくなるとエラー
   になる.//(CXX0030:式は評価不能).
 
 'Ex4-1.c'の<「<*set*>」の設定例と実行結果を示す.
「&(p1+i)」「&(p1[i]+k)」はビルドできないので便宜的に次式で考える(0 ≦「n」< 8).
 「*(m1+n)==m1[n/4][n%4]」
 「*(p1+n)==p1[n/4][n%4]」
(1)「_<*set*>_」=「
   c='A'; n1=p1[i][k]; n2 = p2[i][k]; n3 =
  p2[i][k+3];」
  『■A: 112, 220, 231』
  「n3==*(p2+i*2+k+3)」
  「n3==(p2[i+(k+3)/2][(k+3)%2]」
(2)「_<*set*>」=「c='B'; n1 = p1[i][k];
   p1++; n2 = p1[i-1][k]; n3 = p1[0][0];」
  『■B: 112, 112, 110』
「p1++;」で「p1==m+1」に変わるから(■6:)
  「*(p1+i*4+k)==*(m1+(1+i)*4+k)」
(3)「<*set*>」=「c='C'; n1 = m1[i][k];
   q = &m1[1][1]; p1 = (int_4*)q;
   n2 = p1[i-1][k-1]; n3 = p1[0][0];」
  『■C: 112, 112, 111』
 「p1[i][k]」は「&m1[1][1]」に先頭アドレスがある多次元配列の要素とみなされるから
  「*(p1+i*4+k)==*(m1+(1+i)*4+k+1)」
このことは「c='D'; n3 = p1[-1][-1];」に変更した結果でも確認できる.
  『■D: 112, 112, 100』
 
 Ex4-2.c

 char s[7][8]=={"Sun","Mon","Tue",
                "Wed","Thu","Fri","Sat",};
 char *p[7]={"Sun","Mon","Tue",
             "Wed","Thu","Fri","Sat",};
 <*set*>
 printf("%d,%d\n", sizeof(s), sizeof(p));

『 56,28』

★「<*set*>」=「」の例は省略.
  コピーやソートは「s」より「p」の方が簡単.
☆「s」はchar型データの多次元配列,「p」はポインタの配列でこれらの擬宣言は
   「`char[8][7] s={"Sun","Mon","Tue",
                    "Wed","Thu","Fri","Sat",};」
   「`char[][7] p={"Sun","Mon","Tue",
                   "Wed","Thu","Fri","Sat",};」
多次元配列の擬宣言は初心者に分かり難いが,Cでの宣言の考え方は複雑な宣言《pp.148-151》に示されている例「char (*(*x[3])())[5];」を
「char                (*(*x[3])())[5];」
「char[5]             *(*x[3])();     」
「char[5]*            (*x[3])();      」
「()(char[5]*)        *x[3];          」
「(()(char[5]*))*     x[3];           」
「(()(char[5]*))*[3]  x;              」
と変形すると, x が「 array [3] of pointer to function returning pointer to array [5] of char 」であることがよく分かる.
 
なお,Cは初心者向きではないが次の資料は必読.
wikipedia(C言語)》//目次の「 1 特徴」
http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E
/*-------------------------------------------------

gooのブログパーツ

2016-07-06 17:13:36 | 未削除

@http://blog.goo.ne.jp/bonsai-chat/e/8b8311c533891c092ead3f7b62c6876c
=gooのブログパーツ
/


ブログパーツタグをgoo ブログ用に変換し、記事に貼り付けたりテンプレートに設置することができます。あああ

ブログパーツサポートリスト(全88件)

goo ブログに貼り付けられるパーツ提供元リストです。
※ご注意:本機能をご利用の際は「利用注意文」をご一読ください。

■さまざまなブログパーツタグをgooブログ用に変換し、記事に貼り付けたりテンプレートに設置することができます。

※テンプレートへの設置は、カスタムレイアウトテンプレートを選択した場合、またはブログアドバンスでカスタムテンプレートを選択した場合に可能です。
「テンプレート編集(カスタムレイアウト)」 >>
※ブログパーツサポートリストにないブログパーツは動作しません(「ブログパーツサポートリスト」とはブログ編集画面の左メニュー→「ブログパーツ」のページ内に記載されている「ブログパーツサポートリスト」の一覧を指します)
◆カスタムレイアウトテンプレートを選択すると、カラム数やモジュールの配置を自由に変更することができます。
カスタムレイアウトテンプレートを選択すると、2カラム、3カラムの切り替えや、モジュールの配置を変更できるほか、ブログパーツなどのオリジナル要素をサイドバーや記事エリアに追加することができます。

■1 カスタムレイアウトテンプレートを選択するには※ブログパーツサポートリストに記載されていなくても、貼り付け可能な場合があります。詳しくはこちらをご覧ください。

 

■ブログパーツ設置方法具体例



それぞれのブログパーツについて、次のページで具体的な設置方法を紹介しています。
こちらもあわせてご覧ください。goo オフィシャルパーツ マークのあるものはgoo オフィシャルパーツです。

 ◆YouTubeの動画を貼る
YouTubeという動画共有サイトの動画を自分のブログに貼る手順を紹介します。

[使い方]
■貼り付け方1
1.YouTubeの貼り付けたい動画ページ(動画サムネールをクリックするなどして表示される個別の動画ページ)を表示します

2.プレイヤー下の「共有」をクリックします


バックナンバー - goo ブログの使い方

blog.goo.ne.jp › 使い方
goo ブログの無料新規作成、記事投稿、編集、画像や写真、ブログパーツなどの使い方を紹介しています。 ... 基本編. goo ブログをはじめよう. 基本的な流れ ... (1) 「モジュール配置」から、「バックナンバー」モジュールの[変更]をクリックします。 テンプレート編集 ...

 

<form action="/admin/showblogparts/#blogparts_list" method="post" name="showblogparts"></form>

 


コンピュータで使うデータの表現

2016-07-06 16:52:39 | 未削除

@http://blog.goo.ne.jp/bonsai-chat/e/cf53d369252d5f9e6a3e105397e0d93b
=コンピュータで使うデータの表現
/


コンピュータで使うデータの表現については
[1]《Wikipedia(データ型)
http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B

Wikipediaの記事の目次の項目をクリックすると記事内の項目に直接ジャンプします.
・タブレットには目次は表示されません.
目次
1 型の役割
2 型の実装
3 データ型の種類
3.1 単純型と複合型
3.2 単純型の例
3.3 複合型の例
で,データを単純型と複合型に分類しており,
・単純型はJavaの基本データ型と複合型はJavaの参照型に相当.
Wikipediaでは次のように個々の単純型について詳しく説明されている.
[2]《Wikipedia(整数型)
http://ja.wikipedia.org/wiki/%E6%95%B4%E6%95%B0%E5%9E%8B
目次
1 種類(どちらかというと単純型全般)
1.1 符号あり整数と符号なし整数
1.2 短精度整数型と長精度整数型
1.3 文字型
1.4 多倍長整数型
1.5 固定小数点実数型
1.6 ポインタ
2 データ型名
3 参照
4 関連項目
[3]《Wikipedia(実数型)
http://ja.wikipedia.org/wiki/%E5%AE%9F%E6%95%B0%E5%9E%8B
目次 
1 表現方法
1.1 有理数
1.2 固定小数点数
1.3 浮動小数点数
1.4 10進型
1.5 通貨型
1.6 二重指数表現
[4]《Wikipedia(IEEE754)
http://ja.wikipedia.org/wiki/IEEE_754
目次
1 形式
 1.1 基本形式
1.2 拡張精度形式
1.3 交換形式
1.3.1 ここでのビットの示し方について
1.3.2 32ビット単精度
1.3.2.1 例
1.3.3 64ビット倍精度
1.3.4 半精度と四倍精度
1.3.5 浮動小数点数の比較
1.3.6 十進浮動小数点数
2 浮動小数点数の丸め
2.1 最近接丸め
2.2 方向丸め
3 演算 3.1 全順序判定
4 例外処理
5 推奨 5.1 代替の例外処理
5.2 推奨されている演算
5.3 式評価
5.4 再現性
6 文字列表現
7 脚注・出典
8 参考文献 8.1 規格
8.2 二次文献
8.3 その他
9 関連項目
10 外部リンク

 

文字列 - Wikipedia
 
 
[6]《Wikipedia(文字コード)
http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89
目次 
1 概説
2 (符号化)文字集合、(文字)符号化方式
3 コードセット
3.1 MIME
3.2 Unicode
4 外字
5 文字コードの一覧(一部) 5.1 1バイト系文字コード(符号化文字集合)
5.2 2バイト系符号化文字集合
5.3 文字符号化方式と文字コード(キャラクタセット)
5.4 大規模文字集合
5.5 ISO/IEC 10646およびUnicode
5.6 Unicode の文字符号化方式
5.7 印刷業界の文字集合
5.8 ベンダごとの文字コード
5.9 その他の文字コード
6 参考文献
7 脚注
8 関連項目
9 外部リンク

[8]《Wikipedia(マルチバイト文字)
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%90%E3%82%A4%E3%83%88%E6%96%87%E5%AD%97


「ぼんさい塾(SNS)」の記事一覧

2016-07-06 16:49:51 | 未削除

@http://blog.goo.ne.jp/bonsai-chat/e/0d90ad473db7cea88ea1c212da6a868c
=「ぼんさい塾(SNS)」の記事一覧
/


bonsai.juku.sns%0:ぼんさい塾(SNS)
%01: まえがき
新しいメールアドレスでgooIDを取得しようとして生年月日による本人性確認に失敗しました.(家族の氏名,生年月日にすればよかった?)
「ぼんさい塾(SNS)」のブログタイトルがほしかったのですが
記事(hyml)を「ぼんさいメモ」に統合し,カテゴリー8:未削除に保存します.
%02:目次
%021:math.pdf
%022:phys.pdf
%023:sys.pdf
%024:progC.pdf
%025:progJ.pdf
%026:IT.pdf
%027:elec.pdf
%028:edu.pdf
%03:補遺
%031:gooブログで使用する特殊文字
%032:gooブログのタイトルによる参照
%033:コンピュータで使うデータの表現
%034:PDFファイルを別ウィンドウで開けば目次から高速にジャンプできます.
%04:訂正