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

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

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

新着レッスンノート

10/14 のレッスン内容は、以下の通りです。  ・ C言語文法   - charとsigned/unsigned charの違い   - 日本語コード 詳細は、紙でお渡ししたノートも参照してください。 □ C言語文法 今回も、C言語プログラミングの中級編の問題を題...

10/13 のレッスン内容は、以下の通りです。  ・ マネジメント・戦略の午後問題の解説 詳細は、レッスン中に紙でお渡ししたノートも併せて参照してください。 □ マネジメント・戦略の午後問題の解説 今回は、以下の過去問について解説しました。  ・ 2018年度...

10/7 のレッスン内容は、以下の通りです。  ・ ヒープソートに関するアルゴリズム問題の解説 詳細は、レッスン中に紙でお渡ししたノートも併せて参照してください。 □ ヒープソートに関するアルゴリズム問題の解説 今回は、以下の過去問について解説しました。  ・...

9/24 のレッスン内容は、以下の通りです。  ・ C言語文法   - 実引数と仮引数   - 文字の表示 詳細は、紙でお渡ししたノートも参照してください。 □ C言語文法 今回も、C言語プログラミングの中級編の問題を題材にレッスンを進めました。 〇 実引数と...

9/9のレッスン内容は、以下の通りです。  ・ C言語の応用編   - 水平タブの出力  ・ 情報処理関連   - 改行コードの違い   - クロックと秒の関係 詳細は、紙でお渡ししたノートも参照してください。 □ C言語の応用編 〇 水平タブの出力 C言...

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

基本情報技術者試験情報

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