パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

むむう」記事へのコメント

  • static char const str[] = "afo";

    str[ 0 ] = 'x';

    とか?
    でも実際に動かしてみると、
    Segmentation fault
    だって。
    • 仰っている意味が(素で)いまいち良く分かりません orz

      けど、とりあえず(ここ大事)ソースに書いてコンパイルしてみたところ
      コンパイラさんは
          警告: 代入が読み込み専用領域で行われました

      で、実行させたら
          セグメンテーション違反です

      ですって。
      • static char const str[] = "afo";

        char *str = "afo";
        としても結果は同じでした。
        コンパイルで警告が出ないところは違いますが。
        # コードとしてタチが悪いものの今回の現象が解りやすいのは後者かも知れない

        で、この "afo" っていう文字列は「文字列定数」なのです。"afo"は"afo"として使わねばならず、"xfo"とは出来ません。もしそういう使い方をしたいなら、
        static char const str[] = "afo";
        char buff[ 4 ];
        strncpy( buff, str, sizeof( buff ) );
        buff[ 0 ] = 'x';
        とします(書き換え可能な領域は別に用意する必要があり
        • 私の中で、C言語の教科書とアセンブラの教科書とマイコン&DSPの教科書の
          内容がつながりそうです!
          (ビミョウな表現)
          #.textとか.bssとかいうアレね

          自分で解ってることを説明するのって難しいです、
          それを日記のコメントでこんなに丁寧に(マニヤックに (笑))
          教えていただけて

          ああ私って幸せだなあ。ありがとうございます。
          親コメント

犯人はmoriwaka -- Anonymous Coward

処理中...