タグ

2007年8月21日のブックマーク (4件)

  • ポインタ虎の巻~多次元配列の実現

    面白いことに、p == *p である。これはポインタが指す対象が配列でありポインタではないから、間接参照が生成されないのである(逆に言えばポインタの場合には、*p が間接参照をして、p != *p になる)。 上の表の結果と、二次元配列のシンボル x は、実質上一次元配列であることから、次のキャストは成功することになる。 int *p = (int *)x; だから次のように書ける。 int x[10][10]; int i; int *p = (int *)x; for( i = 0; i < 100; i++ ) { *p++ = i; } printf( "x[5][5] = %d\n", x[5][5] ); これは x が実質上一次元のポインタであることを示している。 この事情は関数引数の場合も同様である。二次元配列とポインタは混同されず、しかし int (*p)[10] とは一

    miya2000
    miya2000 2007/08/21
  • C++の新しいキャスト

    C++の新しいキャスト 従来のキャストの問題点 異なる型への変換において、C/C++ではキャストが用いられます。 // intからlongへのキャスト int ival; int lval = (long)ival; ご存知のとおり、キャストは非常に危険です。 来ならば型の不一致によるコンパイルエラーをねじ伏せるのですから。 キャストの使われ方(意味)は、大きく3種(型変換/型変更/const外し)に分類されます。 型変換 // int から double へ int ival; double dval = (double)ival; 型変更 // long から int* へ long lval; int* iptr = (int*)lval; const外し // const int* から int* へ const int* ciptr; int* iptr = (int*)cip

    miya2000
    miya2000 2007/08/21
  • 配列の先頭アドレス

    新・闘わないプログラマ No.327 配列の先頭アドレス また春がやってきて、新入社員が入ってきたのですが、それに伴い研修などをやる必要があるわけです。今年は仕事の都合で私は講師をやらないのですが、テキストの選定にだけは関わっています。 で、プログラミング研修としてCのテキストを選ばないといけないのですが、さてどうしようか、と。私が講師をやるのならK&Rを使うのですが…。というわけで、Cのテキストになりそうなをいくつか眺めてみているところです。 そんな中で、 「“int a[10];”というふうに配列を宣言した場合、配列名“a”はその配列の先頭アドレスになります」 というような表現をよく目にします。 この表現、なんか気になるんですよね、私は。いや、これは「言葉のアヤじゃん」とか「初心者に厳密な説明したところで余計混乱するだけだ」とか、そういう意見も出てくることとは思いますが、せめて「配列

    miya2000
    miya2000 2007/08/21
  • Technobahn ニュース : 任天堂やソニーもWikipediaを検閲? Wikiscannerによる調査で判明

    miya2000
    miya2000 2007/08/21
    タイトルが酷い/「良く読まれているテクノロジーの記事 ■ 任天堂やソニーもWikipediaを検閲…」