ch5-pointers (Test illegal operations)

Chapter_5     Exercise_5-2 strlen     Exercise_5-3







pointers.c         download


#include <stdio.h> // for printf(), putchar()

int main()
{
char p[10];
char c = p[-1];

printf("c = %c\n", c);
printf("&c = %p\n", &c);
printf("&p = %p\n", &p);
printf("p = %s\n", p);

// p++; // illegal // compile error (constant pointer)
char *cp = p;
cp++; // legal
cp[-2] = 'A'; // p[-1]
cp[-1] = 'B'; // p[0]
printf("p = %s\n", p);

c = p[-1];
printf("c = %c\n", c);
printf("&c = %p\n", &c);

printf("p-cp = %ld\n", p-cp);
printf("&cp = %p\n", &cp);
cp = 0;
printf("p-cp = %ld\n", p-cp);
printf("&cp = %p\n", &cp);

void *v = cp;
printf("v-cp = %ld\n", v-(void*)cp);
printf("v-cp = %ld\n", (char*)v-cp);
printf("&v = %p\n", &v);

int i;
for (i = 1; i <= 5; i++)
{
printf("p[-%d] = %c, ", i, p[-i]); // *(p-i)
}
putchar('\n');

for (i = 1; i <= 3; i++)
{
printf("&p[-%d] = %p, ", i, p-i); // &p[-i]
}
putchar('\n');

char *pm = "now is the time"; // pointer to message
printf("pm = %s\n", pm);
// pm[0] = 'l'; // runtime error (segmentation fault)
char cm[] = "now is the time"; // a message
// pm[0] = 'l'; // runtime error (segmentation fault)
pm = cm;
pm[0] = 'l';
printf("pm = %s\n", pm);
}
/*
gcc pointers.c -o pointers
./pointers
c =
&c = 0x7ffc82999cf3
&p = 0x7ffc82999d16
p =
p = B
c = A
&c = 0x7ffc82999cf3
p-cp = -1
&cp = 0x7ffc82999cf8
p-cp = 140722499591446
&cp = 0x7ffc82999cf8
v-cp = 0
v-cp = 0
&v = 0x7ffc82999d00
p[-1] = A, p[-2] = v, p[-3] = &, p[-4] = �, p[-5] = �,
&p[-1] = 0x7ffc82999d15, &p[-2] = 0x7ffc82999d14, &p[-3] = 0x7ffc82999d13,
pm = now is the time
pm = low is the time
*/









Chapter_5     Exercise_5-2 BACK_TO_TOP strlen     Exercise_5-3



Comments

Popular posts from this blog

Contents

Blogger Page Margins in Contempo