ポインタ1

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

須ア純一 京都大学大学院 工学研究科社会基盤工学専攻 空間情報学講座
[C言語 演習問題トップページ] [須ア純一ホームページ]