ページ 11

無題

Posted: 2009年2月11日(水) 22:45
by まじかる
最近C言語を勉強しはじめたのですが(プログラミングの)、ポインタの所で理解できない部分があって困っています。

おそらくどの参考書にも載っているポインタを使って変数を交換する話なのですが(高橋麻奈著:「初めてのC」という本を使っています)

swap関数を

void swap(int *pX,int *pY){

}

で定義し、main関数の中で

swap(&num1,&num2)

として実引数のアドレスを渡しているのですが、疑問なのはint *pXの*pXはポインタではありますがあくまでint型の整数であり、int型整数にint型アドレスを渡す、やってよいのでしょうか。

例えばint *pX=&num1というのは左辺がint型整数で、右辺はアドレスであり、まずいと思うのですが……

すいません。書いててよくわからなくなってしまいました。どなたかよろしくおねがいします。

Re:無題

Posted: 2009年2月11日(水) 22:59
by non
int *pX は、pXはポインタ(アドレスが入る変数)でそのアドレスが指しているところの
番地にはint型の数値が入っているという意味です。
int *pX=&num1 は、
int *pX;
pX=&num1;
の2行を1行に書いていると考えるといいです。

Re:無題

Posted: 2009年2月11日(水) 23:04
by まじかる
なるほど、理解できました。ありがとうございます。