サイタパソコン教室・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)

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

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

新着レッスンノート

8/10のレッスン内容は、以下の通りです。  ・ C言語における乱数の取り扱い   - 指定範囲の乱数を求める計算式 詳細は、紙でお渡ししたノートも参照してください。 □ C言語における乱数の取り扱い プログラミングでは、厳密な乱数ではなく「擬似乱数列」と呼ばれる配列...

7/30 のレッスン内容は、以下の通りです。  ・ 再帰呼び出しのおさらい  ・ バイナリファイルの読み書き 詳細は、レッスン時にお渡ししたノートを参照してください。 □ 再帰呼び出しのおさらい 前々回までのテーマだった「最短経路の距離を求めるプログラム」について、以...

7/22 のレッスン内容は、以下の通りです。  ・ 時刻関連の処理   - 時刻関連の型   - 時刻関連の標準関数 詳細は、レッスン時にお渡ししたノートを参照してください。 □ 時刻関連の処理 今回のテーマは、時刻関連の処理です。 時刻関連の処理を実装する場...

7/12 のレッスン内容は、以下の通りです。  ・ 最短経路計算プログラムの動作説明 今回の詳細は、レッスン時にお渡ししたノートを参照してください。 □ 最短経路計算プログラムの動作説明 今回は、ソースコードを題材として最短経路計算プログラムの動き方について説明しました...

6/24のレッスン内容は、以下の通りです。  ・ 構造体型宣言の補足  ・ bool型 詳細は、レッスン時にお渡ししたノートも参照してください。 今回は、最短経路を求めるプログラムを題材としました。 □ 構造体型宣言の補足 構造体型宣言について質問があったので、...

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

基本情報技術者試験情報

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