Google

東海大学理学部物理学科素粒子理論・安江研究室  

ホーム 最新情報 サイトマップ

C言語第5回

上へ C言語第1回 C言語第2回 C言語第3回 C言語第4回 C言語第5回 C言語第6回 C言語第7回 C言語第8回 Visual Studio 2005 VisualC++6.0 C言語教科書

旧サイト(phys21.cool.ne.jp)から移行しました。ブックマークの変更(http://phys21.cool.ne.jp-->http://phys.cool.coocan.jp)をお願いします。

PDFファイルの印刷

【学内】PDFファイルリーダーで印刷可能です。PDFファイルでの配布pdfのリンクをクリックしてください。現われる講義録をで印刷してください。

PDFファイル閲覧・印刷にはPDFファイルリーダーが必要です。
無償で使用できる高性能なPDF作成ソフト

第5回:ポインタと配列(PDFファイルでの配布:c5.pdf(Web版は更新されていません、pdfをご覧下さい)

目次

1.番地変数(=ポインタ)

2.間接演算子*とアドレス演算子&

3.配列

4.配列表記と番地

プログラム例(repo7.c)

プログラム例(repo8.c)

プログラム例(repo9.c)

5.ポインタ変数(番地変数)の増減と番地の増減

プログラム例(repo10.c)

プログラム例(repo11.c)

6.数値配列と番地配列

第五回目レポート

【1】番地変数(=ポインタ)教科書82ページの6・2「ポインタの型」参照)

通常の数字(整数)は8ビット16ビット32ビット

番地数値は16ビット32ビット

どっちの数値を扱うか必ずコンピュータに教えておく

目次へ戻る
【2】間接演算子 * と アドレス演算子 &教科書66ページの4・5・3「番地数値とキャスト」参照)

目次へ戻る
【3】配列 連続した番地に置かれている教科書94ページの7・2・1「配列名と番地」参照)

幾つかの同じタイプのデータをまとめて取り扱えます。配列は以下の形式で定義します。

型名 配列名[要素数]

配列名の次の[ ]で囲まれた数値は配列の要素数を表し、たとえば、次のように使います。

「char a[6];」:文字型の配列を6つ確保

「int n[4];」:整数型の配列を4つ確保  

個々配列は

0から始まる

添え字で指定。4つの整数型配列は、

n[0]、n [1]、n [2]、n [3]

の4個。6つの文字型配列は、

a[0] 、a[1] 、a[2] 、a[3] 、a[4] 、a[5]

の6個です。また、

記憶領域に連続して配置

されます。この状況を5つの文字型配列で図示すると

のように、先頭番地(仮に、100番地)から5つ連続して配置されます。

目次へ戻る
【4】配列表記と番地教科書95ページの7・2・2「配列要素と格納番地」参照)

C言語内部ではすべて番地で処理している。配列名は

配列の先頭番地

を表すことになっています。たとえば、

配列名a 」 「 文字列型配列を10個確保 」 ⇒ char a[10];

と宣言します。そして、コンピュータが100番地から109番地まで10個の番地を配列a用にあてがったとします:

a=数値100番地

となります。

プログラムで調べてみると

 

配列と番地の関係

番地の色々

これを実際にプログラムで調べる。

repo8.c 文字型整数と文字型配列の文字データとその格納番地を調べる。

repo9.c 三十四億五千六百七十八万九千十二(3,456,789,012)を符号無し長整数(8バイト)として8バイトの記憶領域に書きこむ。その後、この書きこまれたデータの先頭を[0]で指定し

  • 1)文字型整数(2バイト分)読み出し数値を表示
  • 2)短整数(4バイト分)読み出し数値を表示
  • 3)長整数(8バイト分)読み出し数値を表示 する。

それぞれ幾つと表示されるか?教科書84ページの6・2・1「ポインタ値の増加とエンディアン」参照)

目次へ戻る
【5】ポインタ変数(番地変数)の増減と番地の増減

ポインタ変数を1つ増やしたり減らしたりすると番地はどう動くか?教科書84ページの6・2・1「ポインタ値の増加とエンディアン」参照)

ポインタを1つ進めると必ずつぎのデータの値をポイントする。

これを実際にプログラムで調べる。

目次へ戻る
【6】数値配列と番地配列

通常の数値を格納する配列と番地数値を格納する配列があります。似たような形式が出てきますので注意しましょう。教科書117ページの9・3・3「配列とポインタの初期化の類似性」も参照)

整数と番地

目次へ戻る
第五回目レポート(Web上の講義録は最新ではありません。必ずPDFファイルで確認するように)

学生証番号と氏名を明記すること

必ず表紙を付け、このレポート問題を印刷し表紙の次にいれること
(A4レポート用紙)

  • 1)repo7.c
    • プログラム
    • 実行したときの画面コピー

の2点を提出すること。

  • 2)repo7.cを参考にして変数aの代わりに番地変数(ポインタ)を用いて書き変えた
    • プログラム
    • 実行したときの画面コピー

  • 3)repo8.c
    • プログラム
    • 実行したときの画面コピー(実行できないときもその旨のメッセージが表示された画面コピー)
    • 何を調べているか、プログラムの説明

の3点提出すること。

  • 4)repo9.c
    • プログラム
    • 実行したときの画面コピー(実行できないときもその旨のメッセージが表示された画面コピー)
    • 何を調べているか、プログラムの説明

    の3点提出すること。更に、

    • 教科書84ページ終わりから85ページ始めを参照して、使用したコンピュータはビッグエンディアンかリトルエンディアンかを説明せよ
  • 5)repo10.c
    • プログラム
    • 実行したときの画面コピー
    • なぜこのような表示になったかプログラムの説明

の3点提出すること。

  • 6)repo11.c
    • プログラム
    • 実行したときの画面コピー
    • なぜこのような表示になったかプログラムの説明

の3点提出すること。

  • 7)repo10.cを参考にして
    • 繰り返されているprintf命令をfor文を使ってまとめたプログラムの
      • プログラム
      • 実行したときの画面コピー

    の2点を提出すること。

    • 6つの小数点数:1.0, 1.1, 1.2, 1.3, 1.4, 1.5を配列に格納し、それをrepo10.cに習って数値と番地を表示する
      • プログラム
      • 実行したときの画面コピー
      • 表示結果からdoubleの実数は何個の記憶領域を使っているかをバイト数で示しておくこと

      (*) %pを使用して番地数値を表示している場合には、数値は16進数になる

の3点を提出すること。 教科書65ページの4・5を参照するとよい。

目次へ戻る

前へ ホーム 上へ 次へ

価格で勝負サンヤ              自動車保険一括見積もり

このWeb サイトではインターネットエクスプローラVer.3.0あるいはそれ以上が推奨です Internet Explorer
この Web サイト(since 1997年12月1日)に関する質問やコメントについては、Mail.gif (4196 バイト)安江 まで電子メールをお送りください。
Copyright © 1997-2012/03 東海大学理学部物理学科安江研究室 All rights reserved
最終更新日: 2012年03月22日
マイクロソフト Front Page98