ポインタ
ポインタを利用して二つの値を交換する
#include<stdio.h> void swap(int *nx,int *ny){ int temp = *nx; *nx = *ny; *ny = temp; } int main(void){ int na,nb; puts("二つの整数を入力してください。"); printf("整数1:"); scanf("%d",&na); printf("整数2:"); scanf("%d",&nb); swap(&na,&nb); puts("これらの値を交換しました。"); printf("整数1は%dです。\n",na); printf("整数2は%dです。\n",nb); return 0; }
値を間接的に交換してやるってことか。。
和と差を求める
#include<stdio.h> void sum_diff(int n1,int n2,int *sum,int *diff){ *sum = n1 + n2; *diff = ( n1 > n2 ) ? n1 - n2:n2 - n1; } int main(void){ int na,nb; int wa = 0 ,sa = 0; puts("二つの整数を入力してください。"); printf("整数A:"); scanf("%d",&na); printf("整数B:"); scanf("%d",&nb); sum_diff(na,nb,&wa,&sa); printf("和は%dです。\n差は%dです。\n",wa,sa); return 0; }
変数のアドレスを格納する変数がポインタってことでいいのかな。。。
関数にポインタを渡して、関数の中で間接演算子*を適用させて、そのポインタの指すオブジェクトを間接的に扱う。
何となくは分かるんだけど。