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

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

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

新着レッスンノート

6/17のレッスン内容は、以下の通りです。  ・ 数値表現   - 2進数の小数表現   - 2進数の負値の表現 詳細は、レッスン中に紙でお渡ししたノートも参照してください。 □ 数値表現 今回のテーマは、2進数での小数と負値の表現になります。 ○ 2進数...

6/10のレッスン内容は、以下の通りです。  ・ 基本情報技術者試験 午前免除試験の要綱  ・ 数値表現   - 10進数と2進数   - 基数変換   - 8進数と16進数   - ビットの意味 詳細は、レッスン中に紙でお渡ししたノートも併せて参照してください。 ...

6/3のレッスン内容は、以下の通りです。  ・ ポインタのおさらい  ・ 構造体を指すポインタ 詳細は、紙でお渡ししたノートも参照してください。 □ ポインタのおさらい まずは、ポインタについておさらいしました。 この内容は、2016/11/30 に実施していま...

5/26のレッスン内容は、以下の通りです。  ・ 整数型同士の型変換ルール  ・ 自作strcmp()の実装チェック 詳細は、紙でお渡ししたノートも参照してください。 □ 整数型同士の型変換ルール 整数型同士の型変換(符号なしから符号付き、大きいサイズから小さいサイズ...

5/18のレッスン内容は、以下の通りです。  ・ 複数の条件を同時にチェックする方法 詳細は、紙でお渡ししたノートも参照してください。 □ 複数の条件を同時にチェックする方法 例えば、変数x に対して以下のような条件チェックをする場合があります。  ・ 変数x の...

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

基本情報技術者試験情報

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