課題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; }