プログラミングI第9回



Similar documents
計算式の取り扱い

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

<4D F736F F D2091DE90458F8A93BE82C991CE82B782E98F5A96AF90C582CC93C195CA92A58EFB82CC8EE888F882AB B315D2E312E A2E646F63>

( 復 興 特 別 法 人 制 具 体 的 内 容 ) 復 興 特 別 法 人 制 具 体 的 な 内 容 は 次 とおりです 1 納 義 務 者 法 人 は 基 準 法 人 額 につき 復 興 特 別 法 人 を 納 める 義 務 があります( 復 興 財 源 確 保 法 42) なお 人 格 な

Microsoft Word - 第3章.doc

d_cj01

第1章 簿記の一巡

目 次 表 紙... 1 目 次... 2 改 訂 記 録 目 的 対 象 製 造 部 門 品 質 部 門 組 織 PET 薬 剤 製 造 施 設 ( 施 設 長 )の 責 務 製 造 管 理 者 の 責 務... 7

PowerPoint Presentation

一般競争入札について

第4回税制調査会 総4-1

情報処理技能検定試験 表計算2級 手順書

< F2D8AC493C CC81698EF3928D8ED2816A2E6A7464>

(Microsoft Word - \221\346\202P\202U\201@\214i\212\317.doc)

Microsoft Word - Stattext05.doc

自 分 にあった 健 康 保 険 を 見 つけよう! それぞれの 健 康 保 険 の 特 徴 を 踏 まえ 自 分 にあった 健 康 保 険 を 選 ぶようにしましょう! 今 までの 収 入 扶 養 家 族 の 有 無 によって どの 健 康 保 険 に 加 入 するとメリットがあるか 参 考 にし

(3) 小 単 元 の 指 導 と 評 価 の 計 画 小 単 元 第 11 章 税 のあらまし の 指 導 と 評 価 の 計 画 ( 四 次 確 定 申 告 制 度 抜 粋 ) 関 心 意 欲 態 度 思 考 判 断 技 能 表 現 知 識 理 解 小 単 元 の 評 価 規 準 税 に 関 す

(12) 配当所得の収入金額の収入すべき時期

(2) 支 状 況 保 育 所 ( 定 員 60 人 以 上 ) 支 状 況 は 次 とおりです 1 総 入 構 成 比 は 割 合 が88.1% 活 動 外 入 が2.1% 特 別 入 が9.8%でした 2 構 成 比 は 運 営 費 入 が80.1% 経 常 経 費 補 助 金 入 が17.8%

第 1 条 適 用 範 囲 本 業 務 方 法 書 は 以 下 の 性 能 評 価 に 適 用 する (1) 建 築 基 準 法 施 行 令 ( 以 下 令 という ) 第 20 条 の7 第 1 項 第 二 号 表 及 び 令 第 20 条 の 8 第 2 項 の 認 定 に 係 る 性 能 評

Prog1_14th

<4D F736F F F696E74202D C90BF8F CC8DEC90AC97E181698A4F8D E8816A5F56322E707074>

平 成 27 年 11 月 ~ 平 成 28 年 4 月 に 公 開 の 対 象 となった 専 門 協 議 等 における 各 専 門 委 員 等 の 寄 附 金 契 約 金 等 の 受 取 状 況 審 査 ( 別 紙 ) 専 門 協 議 等 の 件 数 専 門 委 員 数 500 万 円 超 の 受

Microsoft Word - A04◆/P doc

全設健発第     号

(参考資料)国際会計基準(IFRS)の2012年3月期からの任意適用について

第5回法人課税ディスカッショングループ 法D5-4

OKIKAE-KAIRYOU-V3.xdw

図 1 抱 合 株 式 がない 場 合 の 非 適 格 合 併 により 増 加 する 資 本 金 等 の 額 の 計 算 合 併 法 人 株 式 の 価 額 - 移 転 純 資 産 価 額 (2) 合 併 法 人 株 式 等 のみなし 株 式 割 当 等 会 社 法 上 抱 合 株 式 には 合 併

( 別 途 調 査 様 式 1) 減 損 損 失 を 認 識 するに 至 った 経 緯 等 1 列 2 列 3 列 4 列 5 列 6 列 7 列 8 列 9 列 10 列 11 列 12 列 13 列 14 列 15 列 16 列 17 列 18 列 19 列 20 列 21 列 22 列 固 定

スライド 1

Ⅰ 調 査 の 概 要 1 目 的 義 務 教 育 の 機 会 均 等 その 水 準 の 維 持 向 上 の 観 点 から 的 な 児 童 生 徒 の 学 力 や 学 習 状 況 を 把 握 分 析 し 教 育 施 策 の 成 果 課 題 を 検 証 し その 改 善 を 図 るもに 学 校 におけ

平成25年度 独立行政法人日本学生支援機構の役職員の報酬・給与等について

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

1. 表 から 値 を 抽 出 する 説 明 1.1. 表 から 値 を 抽 出 するための 関 数 について 説 明 します LOOKUP VLOOKUP HLOOKUP 関 数 は 検 索 値 に 対 応 する 値 を 検 索 値 を 含 む 一 覧 表 から 抽 出 し てくれる 関 数 です

就 業 規 則 ( 福 利 厚 生 ) 第 章 福 利 厚 生 ( 死 亡 弔 慰 金 等 ) 第 条 法 人 が 群 馬 県 社 会 福 祉 協 議 会 民 間 社 会 福 祉 施 設 等 職 員 共 済 規 程 に 基 づき 群 馬 県 社 会 福 祉 協 議 会 との 間 において 締 結 す

2. 会 計 規 程 の 業 務 (1) 規 程 と 実 際 の 業 務 の 調 査 規 程 や 運 用 方 針 に 規 定 されている 業 務 ( 帳 票 )が 実 際 に 行 われているか( 作 成 されている か)どうかについて 調 べてみた 以 下 の 表 は 規 程 の 条 項 とそこに

目 次 1 報 酬 給 与 額 事 例 1 報 酬 給 与 額 に 含 める 賞 与 の 金 額 が 誤 っていた 事 例 1 事 例 2 役 員 退 職 金 ( 役 員 退 職 慰 労 金 )を 報 酬 給 与 額 として 申 告 して いなかった 事 例 1 事 例 3 持 株 奨 励 金 を

XML形式の電子報告書作成に当たっての留意事項

< F2D32837A815B B EF68BC697BF96C68F9C>

01.活性化計画(上大久保)

本 日 の 内 容 1. ゲートウェイシステムにより 提 出 する 電 子 ファイル 2. ゲートウェイシステムによる 提 出 方 法 3. 電 子 データとeCTDの 関 係 4. 提 出 形 式 提 出 方 法 に 係 るQ&A 2

( 別 紙 ) 以 下 法 とあるのは 改 正 法 第 5 条 の 規 定 による 改 正 後 の 健 康 保 険 法 を 指 す ( 施 行 期 日 は 平 成 28 年 4 月 1 日 ) 1. 標 準 報 酬 月 額 の 等 級 区 分 の 追 加 について 問 1 法 改 正 により 追 加

公 共 債 の 税 金 について Q 公 共 債 の 利 子 に 対 する 税 金 はどのようになっていますか? 平 成 28 年 1 月 1 日 以 後 に 個 人 のお 客 様 が 支 払 いを 受 ける 国 債 や 地 方 債 などの 特 定 公 社 債 ( 注 1) の 利 子 については

4. その 他 (1) 期 中 における 重 要 な 子 会 社 の 異 動 ( 連 結 範 囲 の 変 更 を 伴 う 特 定 子 会 社 の 異 動 ) 無 (2) 簡 便 な 会 計 処 理 及 び 四 半 期 連 結 財 務 諸 表 の 作 成 に 特 有 の 会 計 処 理 の 適 用 有

中根・金田台地区 平成23年度補償説明業務

(Microsoft Word - Excel\211\236\227p2\217\315.docx)

4. その 他 (1) 期 中 における 重 要 な 子 会 社 の 異 動 ( 連 結 範 囲 の 変 更 を 伴 う 特 定 子 会 社 の 異 動 ) 無 (2) 簡 便 な 会 計 処 理 及 び 四 半 期 連 結 財 務 諸 表 の 作 成 に 特 有 の 会 計 処 理 の 適 用 有

寄 附 申 込 書 平 成 年 月 日 一 般 社 団 法 人 滋 賀 県 発 明 協 会 会 長 清 水 貴 之 様 ご 住 所 ご 芳 名 ( 会 社 名 ) 印 下 記 により 貴 協 会 に 寄 附 を 申 し 込 みます 記 1. 寄 附 金 額 金 円 也 1. 寄 付 金 の 種 類

象 労 働 者 を 雇 入 れした 事 業 所 を 離 職 した 雇 用 保 険 の 被 保 険 者 である 労 働 者 の 氏 名 離 職 年 月 日 離 職 理 由 が 明 らかにされた 労 働 者 名 簿 等 の 写 し 2 要 綱 第 9 条 第 2 項 第 1 号 アに 該 当 する 労

2 県 公 立 高 校 の 合 格 者 は このように 決 まる (1) 選 抜 の 仕 組 み 選 抜 の 資 料 選 抜 の 資 料 は 主 に 下 記 の3つがあり 全 高 校 で 使 用 する 共 通 の ものと 高 校 ごとに 決 めるものとがあります 1 学 力 検 査 ( 国 語 数

特別徴収封入送付作業について

32 農事組合法人法人用パンフ_24.2一部改正)

1-2 新 規 CPD 会 員 登 録 の 申 請 から 登 録 までの 手 順 当 協 会 CPDシステムを 利 用 するためには 当 協 会 ホームページトップ 画 面 より CPD 事 務 局 へ のCPD 会 員 登 録 が 必 要 です CPD 会 員 登 録 が 完 了 すると 登 録

の 購 入 費 又 は 賃 借 料 (2) 専 用 ポール 等 機 器 の 設 置 工 事 費 (3) ケーブル 設 置 工 事 費 (4) 防 犯 カメラの 設 置 を 示 す 看 板 等 の 設 置 費 (5) その 他 設 置 に 必 要 な 経 費 ( 補 助 金 の 額 ) 第 6 条 補

している 5. これに 対 して 親 会 社 の 持 分 変 動 による 差 額 を 資 本 剰 余 金 として 処 理 した 結 果 資 本 剰 余 金 残 高 が 負 の 値 となるような 場 合 の 取 扱 いの 明 確 化 を 求 めるコメントが 複 数 寄 せられた 6. コメントでは 親

所 得 税 と 住 民 税 の 税 率 表 所 得 税 と 住 民 税 の 税 率 は 以 下 の 通 りです 退 職 所 得 の 場 合 も この 税 率 表 を 使 います 1. 平 成 19 年 1 月 1 日 以 降 ( 所 法 891) 課 税 所 得 所 得 税 率 控 除 額 ~195

学校教育法等の一部を改正する法律の施行に伴う文部科学省関係省令の整備に関する省令等について(通知)

平成16年度

後期高齢者医療制度

(4) 勤 続 20 年 を 超 え 30 年 までの 期 間 については 勤 続 1 年 につき 100 分 の 200 (5) 勤 続 30 年 を 超 える 期 間 については 勤 続 1 年 につき 100 分 の 100 ( 退 職 手 当 の 調 整 額 ) 第 5 条 の3 退 職 手

(5) 人 権 侵 害, 差 別 又 は 名 誉 毀 損 となるもの, 又 はおそれがあるもの (6) 他 人 を 誹 謗 し, 中 傷 し, 又 は 排 斥 するもの (7) 投 機 心, 射 幸 心 をあおるもの, 又 はそのおそれがあるもの (8) 内 容 が 虚 偽 誇 大 であるなど 過

<4D F736F F D2095BD90AC E937890C590A789FC90B382CC8EE582C893E09765>

3. 選 任 固 定 資 産 評 価 員 は 固 定 資 産 の 評 価 に 関 する 知 識 及 び 経 験 を 有 する 者 のうちから 市 町 村 長 が 当 該 市 町 村 の 議 会 の 同 意 を 得 て 選 任 する 二 以 上 の 市 町 村 の 長 は 当 該 市 町 村 の 議

b) 参 加 表 明 書 の 提 出 時 において 東 北 地 方 整 備 局 ( 港 湾 空 港 関 係 を 除 く) における 平 成 年 度 土 木 関 係 建 設 コンサルタント 業 務 に 係 る 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 認 定 を 受 けて

研究者情報データベース

t検定

私立大学等研究設備整備費等補助金(私立大学等

目 次 1. 論 理 関 数 IF IF の 概 要 論 理 式 の 種 類 等 号 不 等 号 具 体 的 な 使 い 方 ネスト 複 数 の 条 件 を 記 述...

Q1-7 決 済 手 数 料 とは 何 ですか A1-7 決 済 手 数 料 は クレジットカードによる 納 付 を 行 う 際 に 納 税 者 の 皆 様 に 御 負 担 いた だく 手 数 料 で 1 件 ごとにかかります 御 負 担 いただく 手 数 料 は 納 付 額 1 万 円 までは 5

[Q1] 復 興 特 別 所 得 税 の 源 泉 徴 収 はいつから 行 う 必 要 があるのですか 平 成 25 年 1 月 1 日 から 平 成 49 年 12 月 31 日 までの 間 に 生 ずる 所 得 について 源 泉 所 得 税 を 徴 収 する 際 復 興 特 別 所 得 税 を 併

設定フロー ★印は必須の設定です

1級 ワンポイント

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

税金読本(8-5)特定口座と確定申告

2. ど の 様 な 経 緯 で 発 覚 し た の か ま た 遡 っ た の を 昨 年 4 月 ま で と し た の は 何 故 か 明 ら か に す る こ と 回 答 3 月 17 日 に 実 施 し た ダ イ ヤ 改 正 で 静 岡 車 両 区 の 構 内 運 転 が 静 岡 運

縦 計 横 計 をSUM 関 数 で 一 度 に 計 算 する 縦 横 の 合 計 を 表 示 するセルが 計 算 対 象 となる セルと 隣 接 している 場 合 は 一 度 に 合 計 を 求 め ることができます 1 計 算 対 象 となるセル 範 囲 と 合 計 を 表 示 する セル 範

< CF6955C976C8EAE DE82C28E73816A2E786C73>

4 承 認 コミュニティ 組 織 は 市 長 若 しくはその 委 任 を 受 けた 者 又 は 監 査 委 員 の 監 査 に 応 じなければ ならない ( 状 況 報 告 ) 第 7 条 承 認 コミュニティ 組 織 は 市 長 が 必 要 と 認 めるときは 交 付 金 事 業 の 遂 行 の

平成15・16年度の建設工事入札参加資格の認定について

10 期 末 現 在 の 資 本 金 等 の 額 次 に 掲 げる 法 人 の 区 分 ごとに それぞれに 定 める 金 額 を 記 載 します 連 結 申 告 法 人 以 外 の 法 人 ( に 掲 げる 法 人 を 除 きます ) 法 第 292 条 第 1 項 第 4 号 の5イに 定 める

1-1 建 築 物 等 保 守 管 理 業 務 業 務 の 実 施 方 針 本 業 務 の 実 施 方 針 等 について 記 載 してください なお 以 下 の 事 項 については 必 ず 記 載 して ください ( 施 設 維 持 管 理 業 務 全 体 で A4 判 180 枚 以 内 で 記

< B4B92F F8D F591DE90458EE893968B4B92F FC90B329>


< F2D E633368D86816A89EF8C768E9696B18EE688B5>

<4D F736F F D20834C D815B8C768E5A8F912E646F6378>

第1章 総則

kyoukai.indd

財団法人○○会における最初の評議員の選任方法(案)

目 次 利 用 に 際 しての 注 意 事 項... ユーザー 登 録... ログイン... 課 題 申 請... 5 装 置 予 約... 6 ライセンス 取 得 方 法... 7 利 用 料 金 の 確 認 ( 準 備 中 ) 外 部 発 表 登 録 の 方 法... 5 < 附

<4D F736F F D2096F088F582CC8B8B975E814191DE90458EE B4997A B794EF82C98AD682B782E98B4B91A E352E3129>

<6D33335F976C8EAE CF6955C A2E786C73>

施 工 P お 気 に 入 り データを 活 用 するための 準 備 施 工 パッケージデータをお 気 に 入 りに 登 録 し 単 価 を 閲 覧 するための 方 法 を 説 明 します 1. 施 工 パッケージデータをダウンロードする 施 工 パッケージデータのダウンロードは 下 記 から 行

は 固 定 流 動 及 び 繰 延 に 区 分 することとし 減 価 償 却 を 行 うべき 固 定 の 取 得 又 は 改 良 に 充 てるための 補 助 金 等 の 交 付 を 受 けた 場 合 にお いては その 交 付 を 受 けた 金 額 に 相 当 する 額 を 長 期 前 受 金 とし

Microsoft Word - 第74号 結婚・子育て資金の一括贈与に係る贈与税の非課税

Microsoft Word - nagekomi栃木県特定医療費(指定難病)支給認定申請手続きのご案内 - コピー

課 税 ベ ー ス の 拡 大 等 : - 租 税 特 別 措 置 の 見 直 し ( 後 掲 ) - 減 価 償 却 の 見 直 し ( 建 物 附 属 設 備 構 築 物 の 償 却 方 法 を 定 額 法 に 一 本 化 ) - 欠 損 金 繰 越 控 除 の 更 な る 見 直 し ( 大

2 立 候 補 するには 次 に 掲 げる 条 件 を 満 たしていることとする (1) 理 事 又 は 評 議 員 2 名 以 上 の 推 薦 があること (2) 連 続 5 年 以 上 本 学 会 の 正 会 員 で 会 費 を 完 納 していること (3) 選 考 が 行 われる 前 年 の1

Transcription:

プログラミング1 第 9 回 構 造 体 (2) 応 用 構 造 体 へのポインタ 構 造 体 のネスト 関 数 と 構 造 体 ポインタ 良 くあるミス この この 資 料 にあるサンプルプログラムは /home/course/rog1/ublic_html/2007/hw/lec/sources/ 下 に 置 いてありますから いてありますから 各 自 自 分 のディレクトリに のディレクトリに コピーして コンパイル 実 行 してみてください してみてください Prog-1 2007 Lec 09-1

構 造 体 へのポインタ(1) 構 造 体 も 変 数 ですから そのポインタは 以 下 のように 宣 言 できる 構 造 体 タグ 名 *ポインタ 変 数 名 ; ( 例 ) *; 構 造 体 のアドレス 参 照 は 以 下 の 形 式 で 行 なう & 構 造 体 変 数 名 構 造 体 ポインタへのアドレスの 格 納 は 従 来 のポインタ 処 理 と 同 じで ある 即 ち 以 下 のように 行 う 構 造 体 ポインタ 変 数 & 構 造 体 変 数 名 ; ( 例 ) &my_data; この 代 入 以 降 には my_dataのアドレスが 保 持 される Prog-1 2007 Lec 09-2

構 造 体 へのポインタ(2) 構 造 体 ポインタがある 時 に *でそのポインタが 指 し 示 す 構 造 体 の 内 容 を 得 ることが 出 来 る * を 間 接 演 算 子 と 呼 ぶ 構 造 体 メンバーをポインタでアクセスする 場 合 には (*).name (*).birth (*).address のように 書 く &my_data である 時 これは my_data.name my_data.birth my_data.address と 同 じ 意 味 になる 何 故 (*)のように 括 弧 が 必 要 かと かと 言 うと. 演 算 子 が * より 優 先 順 位 が 高 いためで *.nameとすると *(.name) の 事 になってしまうからである (ちなみにこれはコンパイルエラーとなる 何 故 ならは ならは 構 造 体 変 数 ではなく 構 造 体 型 のポインタであるから その 後 ろに. で 続 けてメンバー 名 が 来 るのはあり 得 ないからである) Prog-1 2007 Lec 09-3

構 造 体 へのポインタ(3) メンバー 参 照 の2つ 目 の 方 法 は アロー 演 算 子 -> を 用 いて 以 下 の 形 式 で 行 なう ( - と > 続 けて 書 く) 構 造 体 ポインタ 変 数 名 ->メンバ 名 &mydata である 時 以 下 の3つは 同 一 の 物 である ->name (*).name my_data.name my_data Prog-1 2007 Lec 09-4

構 造 体 へのポインタ(4) 構 造 体 メンバの 出 力 を 行 うサンプルプログラムを 示 す 3 種 類 の 方 法 での 出 力 は 同 じ 結 果 となる name[30]; name[30]; birth; birth; address[80]; address[80]; gender; gender; ; ; *,my_data *,my_data 初 期 化 データ; データ; &my_data; &my_data; ポインタ ポインタ 間 接 演 算 子 ピリオド ピリオド (*).name); (*).name); (*).birth); (*).birth); (*).address); (*).address); (*).gender); (*).gender); ポインタアロー ポインタアロー 演 算 子 ->name); ->name); ->birth); ->birth); ->address); ->address); ->gender); ->gender); 構 造 体 変 数 そのまま そのまま my_data.name); my_data.name); my_data.birth); my_data.birth); my_data.address); my_data.address); my_data.gender); my_data.gender); Prog-1 2007 Lec 09-5

自 己 参 照 的 構 造 体 構 造 体 内 に 自 分 の 型 のポイ ンタを 置 く 場 合 がある これを 自 己 参 照 的 構 造 体 と 呼 ぶ 以 下 のような 場 合 a.next は b を 指 す b.next は c を 指 す a.next->next は c を 指 す このようにデータが 順 に 繋 がっているデータ 構 造 を 連 結 リストと 呼 び 来 週 の 授 業 で 更 に 詳 しく 説 明 する name[30]; name[30]; birth; birth; address[80]; address[80]; gender; gender; *next; *next; ; ; a,b,c; a,b,c; a.next a.next &b; &b; b.next b.next &c; &c; a next b next c Prog-1 2007 Lec 09-6

構 造 体 のポインタ 演 算 構 造 体 の 場 合 も 通 常 の 配 列 同 様 に ポインタに 対 して 加 算 減 算 インクリメント デクリメント 演 算 を 行 なうことが 出 来 る インクリメント 処 理 によって 増 えるアドレスの 量 は 構 造 体 配 列 の 要 素 1 個 分 の 大 きさである (つまりsizeof(meibo[0]) 型 の 場 合 120バイト) 構 造 体 配 列 meibo -- または -1 meibo[n-1] または 1 meibo[n] meibo[n1] Prog-1 2007 Lec 09-7

構 造 体 の 大 きさ なお 構 造 体 の 大 きさは 必 ずしもメンバーの 大 きさの 合 計 にはな らない 例 えば 型 の 場 合 単 純 な 合 計 は (3080)*sizeof() 2*sizeof() (30 80) 2*4 118 コンピュータ(std1ss1) 上 でsizeof(meibo[0])によって 表 示 させると 120と 表 示 された 以 下 のプログラムで 各 メンバの 先 頭 アドレスの 差 を 表 示 させたところ 文 字 配 列 nameの 後 に2バイトの 穴 があることが 分 かる (このプログラムは 参 考 に 載 せたものなので 意 味 が 理 解 できなくても 差 し 支 えない) name birth address gender 4 4 30 2 80 使 用 されない 領 域 Prog-1 2007 Lec 09-8

構 造 体 のポインタ 演 算 ポインタ 演 算 を 行 うサンプルプログラムを 示 す name[30]; name[30]; birth; s1000001std0ss01 birth; s1000001std0ss01./.a.out./.a.out address[80]; meibo[0] address[80]; meibo[0] effff9f8 effff9f8 effff9f8 effff9f8 gender; meibo[1] gender; meibo[1] effffa70 effffa70 effffa70 effffa70 ; sizeof(meibo) ; sizeof(meibo) 240 240,, sizeof(meibo[1]) sizeof(meibo[1]) 120 120 s1000001std0ss02 s1000001std0ss02 *, *, meibo[2] meibo[2] " " 要 素 0 初 期 化 データ", データ", " " 要 素 1 初 期 化 データ", データ", ; ; &meibo[0]; &meibo[0]; meibo; meibo; でも でも 良 い rf("meibo[0] rf("meibo[0] % % %\n",, %\n",, &meibo[0]); &meibo[0]); ; ; rf("meibo[1] rf("meibo[1] % % %\n",, %\n",, &meibo[1]); &meibo[1]); rf("sizeof(meibo) rf("sizeof(meibo) %d %d,, sizeof(meibo[1]) sizeof(meibo[1]) %d\n", %d\n", sizeof(meibo), sizeof(meibo), sizeof(meibo[1])); sizeof(meibo[1])); Prog-1 2007 Lec 09-9

構 造 体 のポインタ 演 算 構 造 体 配 列 メンバの 出 力 を 行 うサンプルプログラムを 示 す 4 種 類 の 方 法 での 出 力 は 同 じ 結 果 となる name[30]; name[30]; birth; birth; address[80]; address[80]; gender; gender; ; ; i; i; *, *, *q, *q, meibo[2] meibo[2] " " 要 素 0 初 期 化 データ", データ", " " 要 素 1 初 期 化 データ", データ", ; ; meibo; meibo; for(i for(i 0; 0; i i 2; 2; i) i) (*( (*( i)).name); i)).name); (*( (*( i)).birth); i)).birth); (*( (*( i)).address); i)).address); (*( (*( i)).gender); i)).gender); Prog-1 2007 Lec 09-10 for(i for(i 0; 0; i i 2; 2; i) i) ( ( i)->name); i)->name); ( ( i)->birth); i)->birth); ( ( i)->address); i)->address); ( ( i)->gender); i)->gender); for(q for(q ; ; q q 2; 2; q) q) (*q).name); (*q).name); (*q).birth); (*q).birth); (*q).address); (*q).address); (*q).gender); (*q).gender); for(q for(q ; ; q q 2; 2; q) q) q->name); q->name); q->birth); q->birth); q->address); q->address); q->gender); q->gender);

関 数 への 構 造 体 のアドレス 渡 し x; x; x x 座 標 y; y; y y 座 標 ; ; swa( swa( *, *, *); *); data1 data1 1.0,2.0, 1.0,2.0, data2 data2 3.0,4.5; 3.0,4.5; swa(&data1,&data2); swa(&data1,&data2); rf("data1(%3.1f,%3.1f) rf("data1(%3.1f,%3.1f) data2(%3.1f,%3.1f)\n", data2(%3.1f,%3.1f)\n", data1.x,data1.y,data2.x,data2.y); data1.x,data1.y,data2.x,data2.y); swa( swa( *a, *a, *b) *b) tm; tm; tm tm *a; *a; *a *a *b; *b; *b *b tm; tm; rf("a(%3.1f,%3.1f) rf("a(%3.1f,%3.1f) b(%3.1f,%3.1f)\n",a->x,a->y,b->x,b->y); b(%3.1f,%3.1f)\n",a->x,a->y,b->x,b->y); Prog-1 2007 Lec 09-11

構 造 体 の 入 れ 子 構 造 構 造 体 宣 言 の 中 に 構 造 体 の 定 義 があるような 構 造 体 の 構 造 を 入 れ 子 と 呼 んでいる これは 既 にある 構 造 体 を 含 んで 更 に 別 のデータのまとまりを 作 り 上 げるときに 有 効 である 例 えば 次 頁 の 例 は 平 面 の 点 構 造 体 を2つ 使 用 してx 軸 y 軸 に 平 行 な 辺 を 持 つ 長 方 形 の 構 造 体 を 宣 言 している この 例 の 場 合 はただの 構 造 体 配 列 でも 実 現 可 能 だが 構 造 体 の 入 れ 子 の 方 が 応 用 範 囲 が 広 い 入 れ 子 の 構 造 体 のメンバーへのアクセスは 以 下 のように 書 く 外 側 の 構 造 体 名. 内 側 の 構 造 体.メンバ 名 Prog-1 2007 Lec 09-12

構 造 体 の 入 れ 子 構 造 先 週 (lec8-19) 平 面 上 の2 点 を 対 角 点 とする 長 方 形 を 構 造 体 配 列 を 使 っ て 考 えたが ここでは 平 面 上 の 点 構 造 体 二 点 をメンバーとして 持 つ 構 造 体 として 考 える math.h> math.h> x; x; x x 座 標 y; y; y y 座 標 ; ; rect rect 1; 1; 2; 2; ; ; s1000001std0ss01 s1000001std0ss01./a.out./a.out The The area area of of the the rectangle rectangle is is 12.000000 12.000000 s1000001std0ss01 s1000001std0ss01 rect rect rect1 rect1 1.0,5.0,4.0,1.0; 1.0,5.0,4.0,1.0; area; area; 構 造 体 メンバーは 構 造 体 名 1. 構 造 体 名 2.メンバー のようにアクセスする Prog-1 2007 Lec 09-13 area area ()fabs((rect1.1.x ()fabs((rect1.1.x - - rect1.2.x) rect1.2.x) * * (rect1.1.y (rect1.1.y - - rect1.2.y)); rect1.2.y)); rf("the rf("the area area of of the the rectangle rectangle is is %f\n",area); %f\n",area);

構 造 体 の 特 徴 構 造 体 を 使 う 利 点 は データの 取 り 扱 いが 明 確 になり 可 読 性 が 向 上 する 扱 う 変 数 の 個 数 が 少 なくなり プ ログラムの 簡 略 化 を 図 ることが 出 来 る データをまとめて 扱 うことができる これをデータのカプセル 化 と 呼 ぶ x 座 標 y 座 標 を 持 つ 平 面 上 の 点 を 点 として 一 括 して 取 り 扱 える 継 承 するデータは 階 層 的 に 構 造 体 を 定 義 すると 非 常 に 有 効 的 となる 点 の 集 まりとして 四 角 形 など の 図 形 を 考 えることが 出 来 る 構 造 体 を 使 う 注 意 点 メンバーをアクセスするときに 名 前 はながくなりやすい 代 入 などの 操 作 を 平 気 に 使 って しまい 余 計 に 計 算 時 間 がかか る 場 合 もある ドット アロー などを 使 うときに 間 違 いやすい Prog-1 2007 Lec 09-14

良 くあるプログラミングミス(1) 構 造 体 を 使 用 した 場 合 の 良 くあるプログラムの 間 違 いを 挙 げてみた なお この 節 の 例 は 全 て 構 造 体 タグを 使 用 するので 構 造 体 タグの 定 義 は 省 略 した またも 省 略 してある 1. ポインタと * を 使 って 構 造 体 のメンバーをアクセスする 時 には 必 ずカッコが 必 要 構 造 体 ポインタがある 時 (*).x *.x 2. 構 造 体 と 構 造 体 ポインタをはっきり 区 別 する 構 造 体 変 数 oと 構 造 体 ポイ ンタがある 時 (*).x *.x o.x (*o).x ->x o->x Prog-1 2007 Lec 09-15

良 くあるプログラミングミス(2) 3. アロー 演 算 子 (->)の 間 に 空 白 を 入 れない(- >のように) *, data1 1.0,2.0; &data1; rf("x %f, y %f\n", - >x, ->y); コンパイラのエラーメッセージ arse error before `>' 4. 大 きな 構 造 体 を 引 数 にする 場 合 は アドレス 渡 しの 方 が 速 い 場 合 がある 値 渡 しの 場 合 は 大 きな 構 造 体 を 関 数 間 でコピーするのに 時 間 がかかるため ただし 速 い からといって どんな 時 でもアドレス 渡 しをするのはいけない 見 易 さ 理 解 し 易 さも 考 えて どちらを 使 用 すべきかを 考 える 必 要 がある 次 頁 に 挙 げたプログラムは 値 渡 しとアドレス 渡 しの 速 さを 比 較 するために 掲 載 した 極 端 な 例 である(Cの 実 験 室 上 級 ラボ 編 林 著 より) 自 分 でも 試 して 体 感 してみる と 良 いだろう Prog-1 2007 Lec 09-16

良 くあるプログラミングミス(3) time.h> time.h> #define #define LOOP LOOP 200000 200000 時 間 に 関 する 関 数 群 の 定 義 詳 しくはman clock などを 参 照 のこと 5000 5000 文 字 の 文 字 配 列 がメンバーの がメンバーの 構 造 体 a[5000]; a[5000]; ; ; fv( fv( ); ); fr( fr( *); *); i; i; data; data; time_t time_t start,end; start,end; 時 間 計 測 用 の 変 数 double double keika; keika; start start clock(); clock(); for(i for(i 0; 0; i i LOOP; LOOP; i) i) fv(data); fv(data); 関 数 呼 び 出 し し end end clock(); clock(); keika keika (end-start)/(double)clocks_per_sec; (end-start)/(double)clocks_per_sec; rf(" rf(" value value %f %f \n",keika); \n",keika); 経 過 時 間 の 表 示 start start clock(); clock(); for(i for(i 0; 0; i i LOOP; LOOP; i) i) fr(&data); fr(&data); 関 数 呼 び 出 し し end end clock(); clock(); keika keika (end-start)/(double)clocks_per_sec; (end-start)/(double)clocks_per_sec; rf(" rf(" address address %f %f \n",keika); \n",keika); 経 過 時 間 の 表 示 Prog-1 2007 Lec 09-17 値 渡 しの しの 関 数 fv( fv( t1) t1) t1.a[0] t1.a[0] 'A'; 'A'; アドレス アドレス 渡 しの しの 関 数 fr( fr( *t2) *t2) t2->a[0] t2->a[0] 'A'; 'A';

実 行 結 果 std1ss40(blade100 std1ss40(blade100 model500 model500 500MHz 500MHz Solaris Solaris 8) 8) value value 5.820000 5.820000 address address 0.010000 0.010000 std3ss20(blade std3ss20(blade 150 150 model550 model550 550MHz 550MHz Solaris Solaris 8) 8) value value 4.720000 4.720000 address address 0.010000 0.010000 std5ss1(blade std5ss1(blade 150 150 model650 model650 650MHz 650MHz Solaris Solaris 8) 8) value value 4.400000 4.400000 address address 0.010000 0.010000 Prog-1 2007 Lec 09-18