第4回演習の解答例


(1)変数a,bに数字をキーボードから入力し,aのアドレスとaにbを代入した時のアドレスが同じになることを以下のプログラムを完成させて確かめよ.


#include <stdio.h>

void main()
{
	int a, b;
	int *pa;
	printf("a = "); scanf("%d", &a);
	printf("b = "); scanf("%d", &b);
 
	pa = &a;
 
	printf("ポインタ変数paの値(=aのアドレス)は,%pです¥n", pa);
	printf("ポインタ変数paの指している値は,%dです¥n", *pa);
 
	a = b;
 
	printf("aにbを代入したときのポインタ変数paの値(=aのアドレス)は,%pです¥n", pa);
	printf("aにbを代入したときのポインタ変数paの指している値は,%dです¥n", *pa);
}

(2)int a, float b, double c, int dに数字をキーボードから入力し,それぞれの値とアドレスを表示するプログラムを作成せよ.


#include <stdio.h>

void main()
{
	int a, d;
	float b;
	double c;

	printf("a=");
	scanf("%d", &a);
	printf("b=");
	scanf("%f", &b);
	printf("c=");
	scanf("%lf", &c);
	printf("d=");
	scanf("%d", &d);

	printf("aの値は%dで,アドレスは%pです.¥n", a, &a);
	printf("bの値は%fで,アドレスは%pです.¥n", b, &b);
	printf("cの値は%lfで,アドレスは%pです.¥n", c, &c);
	printf("dの値は%dで,アドレスは%pです.¥n", d, &d);

}

(3)整数型配列に初期値として,(10,20,30,40,50)を設定したとき,全ての要素の値を表示するプログラムをポインタを用いて作成せよ.


#include <stdio.h>

void main()
{
    int a[5] = {10, 20, 30, 40, 50};
    int *p;
    int i;
 
    p = &a[0];
 
    for(i=0; i<5; i++) {
        printf(" 配列の %d 番目は %d です¥n", i+1, *(p+i) );
    }
}

(4),(5)は第5回でまた同じ問題があるので第5回で頑張って下さい