< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> < 24> < 25> < 26> < 27> | int main(void){ int *a;//int*型のaを作成 //int &b;//コンパイルエラー「参照先を指定しなければいけません」 int c=10,e=20; int &d=c;//参照先を代入するように定義することで参照先を指定できる。 //この時cの中身が代入されるわけではなく、「dがcと同一視される」ことを示す。 //ポインタ型 a=&e; printf("*a=%d\n",*a); a=&c;//ポインタ型は後から参照先を変更可能 printf("*a=%d\n",*a);//ポインタ型は参照先(c)を意味するために*演算子が必要 //参照型 printf("d=%d\n",d);//単にdと書くだけで、参照先(c)を意味する d=30;//同様の理由により、代入すると参照先(c)が変更される printf("c=%d\n",c); a=&d;//dへの絶対IDを取得しようとしても、参照先(c)の絶対IDが返されます printf("*a=%d\n",*a);//そのため、ここで表示されるのはcの値となります //終了待ち getchar(); return 0; } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> < 24> < 25> | int main(void){ int *a; int c=10,e=20; int *d=&c;//参照先へのポインタで初期化するように・・・ //ポインタ型 a=&e; printf("*a=%d\n",*a); a=&c; printf("*a=%d\n",*a); //参照型 printf("d=%d\n",(*d));//強制的に*dとされ、さらに優先順位に惑わされないよう()が付きます (*d)=30;//同様の理由により、代入すると参照先(c)が変更されるようになります printf("c=%d\n",c); a=&(*d);//dへの絶対IDを取得しようとしても、参照先(c)の絶対IDが返されます printf("*a=%d\n",*a);//そのため、ここで表示されるのはcの値となります //終了待ち getchar(); return 0; } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> | void func(int &n){//(1) n=10;//(2) } int main(void){ int n2; func(n2);//(3) printf("n2=%d\n",n2); //終了待ち getchar(); return 0; } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> | void func(int *n){//(1)ポインタ型に変更 (*n)=10;//(2)強制的に参照する } int main(void){ int n2; func(&n2);//(3)呼び出し元は絶対ID(ポインタ値)を渡すように変更 printf("n2=%d\n",n2); //終了待ち getchar(); return 0; } |