Hatena::Grouprubyist

たばさの RSSフィード

04/02(水) 2008

チャレンジャーだな

| チャレンジャーだな - たばさの を含むブックマーク はてなブックマーク - チャレンジャーだな - たばさの

C/C++のポインタの機能--配列との関係 - builder by ZDNet Japan

まだ続けるらしい。やめたほうがいいと思うなあ。使ってても難しいのに。

でも連載始めてだいぶ経つようだから入門書を読む時間も充分あるんだし同情はできない。

#include <stdio.h>

void pr(char *s)
{
    printf( "%c\n", *s );  /* 1byte目 */
    if(strlen(s)>1) printf( "%c\n", *(s + 1) );  /* 2byte目 */
    printf( "%s\n", s );          /* \0まで出力される */
}

void main()
{
    char h[][6] = {"Hello","bad","good","ok?","!"};
    char *s = h;
    int i;
    for(i=0;i<5;i++){
        pr(s);
        s+=6;
    }
    s=h;
    pr(s);
    for(i=0;i<5*6;i++){
        if(*(s+i)!=0) printf("%c  ",*(s+i));
        else printf("   ");
    }
    puts("");
    for(i=0;i<5*6;i++){
        printf("%02x ",*(s+i));
    }
    puts("");
    for(i=0;i<5*6;i++){
        if(*(s+i)!=0) printf("(%s)\n",s+i);
        else puts("not string");
    }
}

隙間は不定かな?


C,C++は使ってると「勉強しないとなあ」と思うし、rubyなど(ポインタのないもの)は「多少変なことしてもMatzがなんとかしてくれてそう」(メモリーリークのようなのはなさそう)と思ってしまうのだ。

f:id:hatecha:20080402184343j:image

よく分からない絵ですが、いつものことです。

*c

| *c - たばさの を含むブックマーク はてなブックマーク - *c - たばさの

こういう実装にしてしまえばいいんだよな。int *n;で、初期化しない場合は安全な領域が自動的に確保されます。それはCではないな。

そうか。「*C」だ。



いつものごとく、しばらくしたらあまり面白い思いつきでもないなと思った。

でも慣れるまでは型宣言なしのrubyも違和感あったし。最近はcも思わず宣言なしで書いてしまう。

トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20080402
カレンダー
<< 2008/04 >>
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
archive Error : RSSが取得できませんでした。