サイタパソコン教室・IT資格情報処理技術者試験対策講座基本情報技術者試験 神奈川 基本情報技術者試験対策セミナー レッスンノート ポインタ・引数の参照渡しのおさらい

ポインタ・引数の参照渡しのおさらい

基本情報技術者試験対策講座のレッスンノート

レッスンノートって?レッスンノートって?

4/1のレッスン内容は、以下の通りです。

 ・ ソースコードの読解練習
  - ポインタ・引数の参照渡しのおさらい

詳細は、紙でお渡ししたノートも参照してください。

□ ソースコードの読解練習

○ ポインタ・引数の参照渡しのおさらい

今回は、ポインタおよび引数の参照渡しに関しておさらいしました。

・ ポインタ

ポインタ演算(*)とアドレス演算(&)の違いを中心に、ポインタというしくみについておさらいしました。

 ・ ポインタ演算
  - 演算対象のオペランド(ポインタ変数)に入っている値を参照して、その値が示すアドレスに所在するデータの中身を見る演算のこと

 ・ アドレス演算
  - 演算対象のオペランド(変数や関数など様々な識別子)が所在するアドレスを求める演算のこと

ポインタ変数そのものには、アドレスを示す値を格納できます。

ポインタ変数にポインタ演算子をつけたものには、単なる数値や文字などを格納できます。

 [例]

 int a;
 int *p;

 p = &a; /* ポインタ変数そのものには、変数a のアドレス(アドレス演算で取得)を入れる */
 *p = 10; /* ポインタ変数にポインタ演算子をつけたものには、数値10を入れる */


・ 引数の参照渡し

ここでは、多次元配列の引数の受け渡しをおさらいしました。

関数func()から、関数sub()を呼び出すときに、2次元配列s[100][128]を渡すとしましょう。

 void func() {
  char s[100][128];

   :

  sub(s, 100);
 }

実際には、上記のように配列名(配列の先頭アドレスと解釈される)を渡すのでしたね。

そして、呼び出し先の関数sub()は、

 void sub(char s[][128], int n) {
  :
 }

上記のように仮引数部分を記します。

ここで、2次元以上の配列を渡す場合には、この仮引数部分の書き方があります。それは、

 ・ 最初の添字の部分には、要素数を書かなくてもよい(書いても無視される)
  - この要素数は、必要ならば別の引数で渡す必要があります
 ・ 2番目以降の添字の部分には、要素数を明記しなければならない
  - したがって、上記の場合は128と明記した

です。

なお、上記のように記述したとしても、内部の処理的には

 void sub(char **s, int n)

と書かれたものとみなして処理します。

目的・種類別に基本情報技術者試験対策・合格講座を探す

新着レッスンノート

12/11 のレッスン内容は、以下の通りです。  ・ C言語文法   - 条件演算   - (*a)++; の動き方   - a = b = c; の動き方 詳細は、紙でお渡ししたノートも参照してください。 □ C言語文法 引き続き、ソースコードの読解問題を題材に...

12/5の体験レッスンの内容は、以下の通りです。  ・ ガイダンス  ・ 基本情報技術者試験の概要   - 出題形式   - 出題の種類 詳細は、別途お渡ししたノートも参照してください。 □ ガイダンス 冒頭で、現状の確認を兼ねてガイダンスを実施しました。 ...

11/27 のレッスン内容は、以下の通りです。  ・ マルチバイト文字   - ワイド文字   - 定数表現のプレフィックス・サフィックス 詳細は、紙でお渡ししたノートも参照してください。 □ マルチバイト文字 今回のテーマは、マルチバイト文字です。 マルチバ...

11/6 のレッスン内容は、以下の通りです。  ・ 文字列の配列   - 2次元配列を使う場合   - ポインタの配列を使う場合 詳細は、紙でお渡ししたノートも参照してください。 □ 文字列の配列 今回も、C言語プログラミングの中級編の問題を題材にレッスンを進めまし...

10/28 のレッスン内容は、以下の通りです。  ・ C言語の読解練習   - strdump()の役割   - 数値の2進数表示処理 詳細は、紙でお渡ししたノートも参照してください。 □ C言語の読解練習 今回も、C言語プログラミングの中級編の問題を題材にレッスン...

レッスンノート ページ先頭へ

基本情報技術者試験情報

サイタの基本情報技術者試験講師がブログを通して、基本情報技術者試験情報を発信。更新情報のチェックはこちらから!