senooken JP Social
  • FAQ
  • Login
senooken JP Socialはsenookenの専用分散SNSです。
  • Public

    • Public
    • Network
    • Groups
    • Popular
    • People

Conversation

Notices

  1. やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Tuesday, 18-Sep-2018 20:26:07 JST やきたま :sabakan: やきたま :sabakan:

    自信がないタイプなのでリプライつけないのだけど、引数でポインタを受け取ったあとそのアドレスを書き換えることができるとすれば、main 関数内で領域獲得した変数のアドレスを変更できることになってしまうので、なんとなくだけどできないイメージ…… ポインタ引き渡しで許可しているのはあくまでメモリ領域内のデータの書き換えだけに限定しないと、なんらかのバイオレーションが発生しそう。本当にポインタの変更が必要ならダブルポインタを使うべきな気がする。あと、関数名 init から推測するに、やることは構造体変数の初期化なので、アドレス書き換えじゃなくて中のデータを書き換えてあげないと、複数の同じ構造体データに対して利用できなくなる。

    int main(void) {
    struct st1, st2;
    init(&st1);
    init(&st2);
    }

    した場合に、どちらも同じアドレスに書き換えられて、init 関数の役目を果たさない気がする。

    In conversation Tuesday, 18-Sep-2018 20:26:07 JST from mstdn.yakitamago.info permalink
    • せのお (妹尾 賢) likes this.
    • せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Tuesday, 18-Sep-2018 21:35:29 JST せのお (妹尾 賢) せのお (妹尾 賢)
      in reply to
      コメントありがとうございます。
      自信がなくても気軽に返信いただいてかまいませんよー。
      ご指摘の通り,ダブルポインタを使わないとだめでした。
      ありがたいことに,他にお二人からもコメントいただけて,こちらの間違いがよくわかりました。

      initという関数名は,ある処理の共通初期化処理のために,グローバル変数を取得する処理を意図しています。前後にmutexロック・アンロックとかあったりします。
      In conversation Tuesday, 18-Sep-2018 21:35:29 JST permalink
    • やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Tuesday, 18-Sep-2018 21:39:57 JST やきたま :sabakan: やきたま :sabakan:
      in reply to
      • せのお (妹尾 賢)

      @senooken なるほどです、情報ありがとうございます! お二人の投稿も確認しに行きました。ふだんポインタを使うことがない(ごく小規模な組み込みだと……)ので、ちょっと頭の体操みたいな感覚でコメントしてましたw

      In conversation Tuesday, 18-Sep-2018 21:39:57 JST permalink
      せのお (妹尾 賢) likes this.

Feeds

  • Activity Streams
  • RSS 2.0
  • Atom
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.