ポインタ変数の値渡し

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
るま

ポインタ変数の値渡し

#1

投稿記事 by るま » 6年前

ポインタについて勉強したばかりなのですが以下のようにすればaの値が1になるということでよろしいでしょうか?

コード:

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

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

hide

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

#2

投稿記事 by hide » 6年前

オシイです
関節演算子 * よりも、後置インクリメントのほうが優先されますので、

コード:

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

コード:

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

box
記事: 2002
登録日時: 13年前

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

#3

投稿記事 by box » 6年前

るま さんが書きました:ポインタについて勉強したばかりなのですが以下のようにすればaの値が1になるということでよろしいでしょうか?

コード:

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

コード:

    printf("%d\n", b);
    printf("%d\n", *b);
とか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

るま

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

#4

投稿記事 by るま » 6年前

なるほど、確かに実験してみたほうが良かったかもしれません
お二人ともありがとうございました

返信

“C言語何でも質問掲示板” へ戻る