Hatena::Groupskcomputerclub

5月24日部活資料

5月24日部活資料

プレゼンテーション

配列(続き) 関数 ポインタ

ShutoMorii(id:Pasta-K)

pastak[at]hacobu.org

この資料

http://skcomputerclub.g.hatena.ne.jp/keyword/5月24日部活資料

にあります。

はてなグループで作りました。

はてなのアカウント持ってない人は作ればコメントとか書けます。

情報共有ウェアとして使えないかしら。

forで配列の中身を取得する

  int hoge[5]={10,20,50,60,80};
  int i;
  for(i=0;5>i;i++){
    printf("%d番目の要素は%dです\n",i,hoge[i]);
  }
  
  return 0;

i=0

  • このときi=0にしておくと、配列を1番目から取得出来る。
    • インデックス番号0=先頭の要素

二次元配列

  • 宣言
int hoge[6][5]
ということが出来る。 配列の中に配列を作る。

または

int hoge[3][5]={
 {1,2,3,4,5},
 {6,7,8,9,10},
 {11,12,13,14,15}
}

イメージ図

hoge[0][1][2][3][4]
[0]12345
[1]678910
[2]1112131415

関数って何

機能を一まとめにして使い易くしたもの

main関数

  • プログラム実行時に呼び出される関数
int main(){
ゴニョゴニョ
return 0;
}

これとか

int f(int x){
 return (int)x^2+3*x+10;
}

関数宣言

型 関数名(引数){関数内の動作};
  • 型:返り値の変数型
  • 引数:関数に渡す値

さっきのだと

int f(int x){
 return x^2+3x+10;
}
  • 型:int
  • 引数:任意の整数x
  • 返り値:x^2+3*x+10の計算結果

実際に呼び出すサンプル

#include <stdio.h>
int f(int x){
 return x^2+3x+10;
}
int main(){
int ans=f(5);
printf("%d",ans);
return 0;
}

printf関数

stdio.h内で定義されている関数
  • [MinGWインストールディレクトリ]\include\stdio.h
    • 252行目

中身

int printf (const char *__format, ...)
{
  register int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vprintf( __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
  • 興味があれば読解してみて下さい

演習

(1)

  • 二次元配列の中身をforループで順番に取得する
出力例
hoge[1][2]は30です。

演習

(2)

  • 関数の機能として10の位の数字を取得する機能を実装する
    • 10の位の数字:(x%100)/10

次回予告

  • C言語の鬼門ポインタ
  • この前の本の10章を斜め読みしてきて下さい
  • 「参照渡し」の手前まで

注釈

diff=(n1>n2) ? n1-n2 :n2-n1;
  • 三項演算子
    • (条件式)?(真の場合):(偽の場合)
  • sizeof演算子
    • データのバイト数を返す