Shuhei Kagawa

CPD

Jul 23, 2009

developerWorks進化するアーキテクチャーと新方式の設計: 設計のためのリファクタリング という記事で、コードの重複を検出するツールが紹介されています。 CPD という名前で、Copy/Paste Detector の略だとか。

PMD – Finding copied and pasted code

PMD という静的コード解析ツールの一部として入手できます。

コマンドライン引数

Jul 5, 2009

OpenCV を触ってみようと思い、今まで避けてきた C 言語を勉強中です。 C++ や Objective-C を触るのにも必要ですからね。

で、まずは基本のキからということで、

#include <stdio.h>

int main(int argc, char** argv) {
  if (argc > 1) {
    printf("Hello, %s!", argv[1]);
  } else {
    printf("Hello, World!");
  }
}

argc はコマンドライン引数の個数、argv はコマンドライン引数の配列です。 コマンドライン引数にはプラグラム名も含まれるため、引数なしの場合でも argc は 1 となります。 また、 argv の方は char* argv[] とも書くことができ、引数の文字列へのポインタの配列です。

ポインタの勉強

Jul 3, 2009

ポインタについて勉強してみます。

変数のアドレス

int value = 10;

のとき &value で変数 value のメモリ上のアドレスがわかります。

ポインタ

メモリ上のアドレスを格納する変数がポインタです。

int value = 10;
int *ptr;
ptr = &a;

という感じです。

ポインタの指す値

ptr の指すアドレスにある変数の値をとるには *ptr と書きます。

printf("*ptr の値は %d です。", *ptr); // *ptr の値は 10 です。