【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132at TECH
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132 - 暇つぶし2ch599:デフォルトの名無しさん
07/12/21 15:17:17
この書き方が文法的に正しいかも移植性が高いのかもともにはっきりしない。ただし、かなり幅広く使われている。この技法による実装は以下のようになる。

#include <stdlib.h>
#include <stdio.h>

struct name *makename(char *newname)
{
  struct name *ret
    =malloc(sizeof(struct name)-1 + strlen(newname)+1);
      /* -1 は頭の [1] 用; +1 は \0 用 */
  if(ret!=NULL){
    ret->namelen = strlen(newname);
    strcpy(ret->namestr, newname);
  }

  return ret;
}

上の関数は、name 構造体の実体を、引数で要求された名前を保持できるように(構造体の定義から想像する1文字ではなく)大きさを調整して割り付ける。
幅広く使われているけれど、この技はいささか悪名高い。……

以上、CFAQ初版より抜粋


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch