課題1
下記のプログラムをpointer1.cとして書き、実行することで、ポインタ変数のサイズを 確認せよ。
#include <stdio.h>
int main(void)
{
char a, *pa;
int b, *pb;
float c, *pc;
double d, *pd;
printf("size of a = %dbyte\n", sizeof(a));
printf("size of pa = %dbyte\n\n", sizeof(pa));
printf("size of b = %dbyte\n", sizeof(b));
printf("size of pb = %dbyte\n\n", sizeof(pb));
printf("size of c = %dbyte\n", sizeof(c));
printf("size of pc = %dbyte\n\n", sizeof(pc));
printf("size of d = %dbyte\n", sizeof(d));
printf("size of pd = %dbyte\n\n", sizeof(pd));
return 0;
}
課題2
下記のプログラムをpointer2.cとして書き、実行することで、 ポインタ変数の働きを理解せよ。
#include <stdio.h>
int main(void)
{
int a, b;
int *p;
a=100;
p=&a;
b=*p;
printf("現在ポインタpは変数aのアドレスを示している\n");
printf("アドレス: &a=%X, &b=%X, p=%X\n", &a, &b, p);
printf("値: a=%d, b=%d, *p=%d\n\n", a, b, *p);
a=200;
b=300;
printf("現在ポインタpは変数aのアドレスを示している\n");
printf("アドレス: &a=%X, &b=%X, p=%X\n", &a, &b, p);
printf("値: a=%d, b=%d, *p=%d\n\n", a, b, *p);
p=&b;
printf("現在ポインタpは変数bのアドレスを示している\n");
printf("アドレス: &a=%X, &b=%X, p=%X\n", &a, &b, p);
printf("値: a=%d, b=%d, *p=%d\n\n", a, b, *p);
return 0;
}
課題3
下記のプログラムをpointer3.cとして書き、実行することで、ポインタ変数の働きを理 解せよ。
#include <stdio.h>
int main(void)
{
int i;
char name[]="Tokyo Joho University";
char *p;
p=name;
printf("*** ケース1 ***\n");
printf("アドレス: name=%X, p=%X\n", name, p);
printf("値: name=%s, p=%s\n\n", name, p);
printf("*** ケース2 ***\n");
putchar(*p);
putchar(*(p+1));
putchar(*(p+2));
putchar(*(p+3));
putchar(*(p+4));
putchar(*(p+5));
putchar(*(p+6));
printf("\n\n");
printf("*** ケース3 ***\n");
i=0;
while (name[i]){
name[i] = name[i]+1;
i++;
}
printf("値: name=%s\n\n", name);
printf("*** ケース4 ***\n");
while (*p){
*p = *p-1;
++p;
}
printf("値: name=%s\n", name);
return 0;
}