Below is a source code to show size of pointer variable. Write the source code and save it as "pointer1.c". After compilation, confirm by executing it.
#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); }
(Execution result) $ ./a.out size of a = 1byte size of pa = 4byte size of b = 4byte size of pb = 4byte size of c = 4byte size of pc = 4byte size of d = 8byte size of pd = 4byte $
Write a below source code and save it as "pointer2.c". Throught the execution of it, understand function of pointer variable.
#include <stdio.h> int main(void) { int a, b; int *p; a=100; p=&a; b=*p; printf("Pointer 'p' is referring to address of variable 'a'\n"); printf("Address: &a=%X, &b=%X, p=%X\n", &a, &b, p); printf("Value: a=%d, b=%d, *p=%d\n\n", a, b, *p); a=200; b=300; printf("Pointer 'p' is referring to address of variable 'a'\n"); printf("Address: &a=%X, &b=%X, p=%X\n", &a, &b, p); printf("Value: a=%d, b=%d, *p=%d\n\n", a, b, *p); p=&b; printf("Pointer 'p' is referring to address of variable 'b'\n"); printf("Address: &a=%X, &b=%X, p=%X\n", &a, &b, p); printf("Value: a=%d, b=%d, *p=%d\n\n", a, b, *p); return (0); }
(Execution example) $ ./a.out Pointer 'p' is referring to address of variable 'a' Address: &a=22F064, &b=22F060, p=22F064 Value: a=100, b=100, *p=100 Pointer 'p' is referring to address of variable 'a' Address: &a=22F064, &b=22F060, p=22F064 Value: a=200, b=300, *p=200 Pointer 'p' is referring to address of variable 'b' Address: &a=22F064, &b=22F060, p=22F060 Value: a=200, b=300, *p=300 $
Write a below source code and save it as "pointer3.c". Throught the execution of it, understand function of pointer variable.
#include <stdio.h> int main(void) { int i; char name[]="JERS-1/SAR"; char *p; p=name; printf("***** case 1 *****\n"); printf("Address: name=%X, p=%X\n", name, p); printf("Value: name=%s, p=%s\n\n", name, p); printf("***** case 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("***** case 3 *****\n"); i=0; while (name[i]){ name[i] = name[i]+1; i++; } printf("Value: name=%s, p=%s\n", name, p); printf("String length = %d\n\n", i); printf("***** case 4 *****\n"); while (*p){ *p = *p-1; ++p; } printf("Value: name=%s, p=%s\n\n", name, p); printf("Value: name=%s, p-%d=%s\n\n", name, i, p-i); return (0); }
(Execution example) $ ./a.out ***** case 1 ***** Address: name=22F040, p=22F040 Value: name=JERS-1/SAR, p=JERS-1/SAR ***** case 2 ***** JERS-1/ ***** case 3 ***** Value: name=KFST.20TBS, p=KFST.20TBS String length = 10 ***** case 4 ***** Value: name=JERS-1/SAR, p= Value: name=JERS-1/SAR, p-10=JERS-1/SAR $
Below is a source code to show each character of string. Write the source code and save it as "pointer4.c". Compare this source code with 'Exercise 7 in Array' by executing it.
#include <stdio.h> int main(void) { char name[] = "JERS-1/SAR"; char *p; for(p=name; *p != '\0'; p++){ printf("%c\n", *p); } return (0); }
(Execution result) $ ./a.out J E R S - 1 / S A R
Below is a source code to show the length of string. Write the source code and save it as "pointer5.c". Compare this source code with 'Exercise 8 in Array' by executing it.
#include <stdio.h> int main(void) { char name[] = "JERS-1/SAR"; char *p; int n=0; for(p=name; *p != '\0'; p++) n++; printf("n = %d\n", n); return (0); }
We want to show string repeatedly by shifting top character of string to right. Refer to a below execution example. Write a below source code, complement the expression hidden by "******" to meet this requirement, and save the source code as "pointer6.c". Confirm whether it can execute properly.
#include <stdio.h> int main(void) { char str[20], *p; printf("Input about 10 characters of string\n"); scanf("%s",str); // Pointer variable refers to address of string ***************************** ***************************** // Show string by shifting top character of string to right ***************************** ***************************** ***************************** ***************************** return (0); }
(Execution example) $ ./a.out Input about 10 characters of string abcd1234EFGH abcd1234EFGH bcd1234EFGH cd1234EFGH d1234EFGH 1234EFGH 234EFGH 34EFGH 4EFGH EFGH FGH GH H $
Contrary to Exercise 6, here, we want to show string repeatedly by shifting top character of string from right to left. Refer to a below execution example. Write a below source code, complement the expression hidden by "******" to meet this requirement, and save the source code as "pointer7.c". Confirm whether it can execute properly.
#include <stdio.h> int main(void) { char str[20], *p; printf("Input about 10 characters of string\n"); scanf("%s",str); // Pointer variable refers to address of string ***************************** ***************************** // Show string by shifting top character of string from right to left ***************************** ***************************** ***************************** ***************************** return (0); }
(Execution example) $ ./a.out Input about 10 characters of string abcd1234EFGH H GH FGH EFGH 4EFGH 34EFGH 234EFGH 1234EFGH d1234EFGH cd1234EFGH bcd1234EFGH abcd1234EFGH $