ページ 11

ポインタ変数の値渡し

Posted: 2017年9月23日(土) 00:34
by るま
ポインタについて勉強したばかりなのですが以下のようにすればaの値が1になるということでよろしいでしょうか?

コード:

void p(int *c){
*c++;
}

int main(){
int a=0;
int *b = &a;
p(b);
}

Re: ポインタ変数の値渡し

Posted: 2017年9月23日(土) 00:50
by hide
オシイです
関節演算子 * よりも、後置インクリメントのほうが優先されますので、

コード:

void p(int *c){
  *c++;
}

コード:

void p(int *c){
  *(c++);
}
であるかのように振る舞い、cというポインタ自体を進めてからそのアドレスの変数を呼び出して終わります。
aの値が1になる
 つまり、渡したポインタの指す先の変数を1増やしたいのであれば、
cとして受け取ったポインタの指す変数を取り出して、その値を増やす という形になるように書かないといけないですね

Re: ポインタ変数の値渡し

Posted: 2017年9月23日(土) 02:09
by box
るま さんが書きました:ポインタについて勉強したばかりなのですが以下のようにすればaの値が1になるということでよろしいでしょうか?

コード:

p(b);
}
実験してみればいいのに…。printfか何かをかませれば、すぐわかりますよね。

コード:

    printf("%d\n", b);
    printf("%d\n", *b);
とか。

Re: ポインタ変数の値渡し

Posted: 2017年9月23日(土) 10:16
by るま
なるほど、確かに実験してみたほうが良かったかもしれません
お二人ともありがとうございました