5 Pointers
5 Pointers
-------------------------------------------------------------------------------------------------------
Find out the output for the following programs.
2) #include <stdio.h>
int main()
{
int *ptr, a = 10;
ptr = &a;
*ptr += 1;
printf("%d,%d/n", *ptr, a);
}
Ans...11,11
3) #include<stdio.h>
int main()
{
int x = -300;
unsigned char *p;
p = &x;
printf(“%d\n”,*p++);
printf(“%d\n”,*p);
}
Ans..212,254
4) #include<stdio.h>
int main()
{
int x = 256;
char *p = &x;
*++p = 2;
printf(“%d”,x);
}
Ans..512
5) #include<stdio.h>
int main()
{
int x = 300;
if(*(char *)&x == 44)
printf(“Little Endian\n”);
else
printf(“Big Endian\n”);
}
Ans..little endian
6) #include <stdio.h>
void main()
{
int x = 0;
int *ptr = &5;
printf("%p\n", ptr);
}
Ans..lvalue request error as & is unary operand
7) #include<stdio.h>
int main()
{
int const *p = 5;
int q;
p = &q;
printf(“%d”,++(*p));
}
Ans..read only permission for *p
8) #include<stdio.h>
int main()
{
int x = 10;
int const * const p;
p = &x;
printf(“%d\n”, *p);
}
Ans..read only variable p
9) #include <stdio.h>
int x = 0;
void main()
{
int *const ptr = &x;
printf("%p\n", ptr);
ptr++;
printf("%p\n ", ptr);
}
Ans..read only variable ptr
14) #include<stdio.h>
int main()
{
int a[ ] = {10,20,30,40,50},i;
char *p = a;
for(i=0;i<5;i++)
printf(“%d “,*p++);
}
Ans...10,0,0,0,20
15) #include<stdio.h>
int main()
{
int a[]={10,20,30,40,50};
char *p;
p=(char *)a;
printf("%d\n",*((int *)p+4));
}
Ans..50
Ans: b)
21) Which of following logical operation can be applied to pointers?
(Assuming initialization int *a = 2; int *b = 3;)
a) a | b
b) a ^ b
c) a & b
d) None of the mentioned
Ans: d)
24)#include <stdio.h>
void foo(int*);
int main()
{
int i = 10,j=20,*p = &i;
foo(p++);
foo(p);
}
void foo(int *p)
{
printf("%d\n", *p);
}
Ans..10,20
25)#include <stdio.h>
int main()
{
int i = 97, *p = &i;
foo(&i);
printf("%d ", *p);
}
void foo(int *p)
{
int j = 2;
p = &j;
printf("%d ", *p);
}
Ans..2,97
26) #include<stdio.h>
int main()
{
const int ary[4] = {1,2,3,4};
int *p = ary+3;
*p = 5;
ary[3] = 6;
printf(“%d”,ary[3]);
}
Ans..read only permission for array
27) #include<stdio.h>
int main()
{
char *p = “Hai friends”, *p1 = p;
while(*p!='\0');
++*p++;
printf(“%s %s\n”,p,p1);
}
Ans...infinite loop
28) #include<stdio.h>
int main()
{
char *x = “VECTOR”;
printf(“%s\n”,x+3);
printf(“%d\n”+1,123456);
}
Ans..TOR,d
29) #include<stdio.h>
int main()
{
char a[ ] = “abcdefgh”;
int *ptr = a;
printf(“%x %x\n”,ptr[0],ptr[1]);
}
Ans...64636461,64636465
30) #include<stdio.h>
#include<string.h>
int main()
{
char *str = "hello, world\n";
char *strc = "good morning\n";
strcpy(strc, str);
printf("%s\n", strc);
return 0;
}
Ans.. segmentation fault
31)#include <stdio.h>
int main()
{
char *str = "hello world";
char strc[50] = "good morning india\n";
strcpy(strc, str);
printf("%s\n", strc);
return 0;
}
Ans..hello world
36) #include<stdio.h>
int main()
{
int a = 5,b = 4,c = 9;
*(a>b ? &a : &b) = (a+b)>c;
printf(“%d %d\n”,a,b);
}
Ans..0,4
37) Find the sizeof any datatype with out using sizeof operator. (Hint : Use pointers)
38) #include<stdio.h>
int main()
{
int i;
double a = 5.2;
char *ptr;
ptr = (char *)&a;
for(i=0;i<=7;i++)
printf(“%d\n”,*ptr++);
return 0;
}
Ans....-51
-52
-52r
-52
-52
-52
20
64
40) #include<stdio.h>
main()
{
char a[20];
char *p,*q;
p=&a[0];
q=&a[10];
printf("%d %d\n",q-p,&q-&p);
}
Ans...10,1
41) #include<stdio.h>
main()
{
int a=0x12345678;
void *ptr;
ptr=&a;
printf("0x%x\n",*(int *)&*&*(char*)ptr);
}
Ans...0x12345678
42) #include<stdio.h>
main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d %d\n",*(a+1),*(ptr-1));
printf("%d %d\n",*(a+1),*(ptr));
}
Ans..2 ,5
2,-1078301204
44) #include<stdio.h>
main()
{
char a[]="abcde";
char *p=a;
p++;
p++;
p[2]='z';
printf("%s",p);
}
Ans...cdz
45) #include<stdio.h>
main()
{
char a[]=”ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
int i,*p = a;
for(i=0;i<5;i++)
printf(“%d\t”,*p++);
}
Ans...1145258551 1212630597 1280002633 1347374669 1414746705 v
46) #include<stdio.h>
main()
{
char a[]=”abcdef”;
char *ptr1 = a;
ptr1 = ptr1+(strlen(ptr1)-1);
printf(“%c”, --*ptr1--);
printf(“%c”,--*--ptr1);
printf(“%c”,--*(ptr1--));
printf(“%c”,--*(--ptr1));
printf(“%c”,*ptr1);
}
Ans..ecbaa
47) #include<stdio.h>
int main()
{
char *str1 = “Hello”;
char *str2 = “Hai”;
char *str3;
str3 = strcat(str1,str2);
printf(“%s %s\n”,str3,str1);
return 0;
}
Ans... segmentation fault
48) #include<stdio.h>
int main()
{
char a[]=”Hello”;
char *p=”Hai”;
a=”Hai”;
p=”Hello”;
printf(“%s %s\n”,a,p);
return 0;
}
Ans...error due to incompatible types when assigning bwn pointer and array
49) #include<stdio.h>
int main()
{
int i,n;
char *x=”Alice”;
n=strlen(x);
*x=x[n];
for(i=0;i<=n;i++)
{
printf(“%s”,x);
x++;
}
printf(“%s\n”,x);
return 0;
}
ANS.. Segmentation fault
50) #include<stdio.h>
char *str=”char *str=%c%s%c;main(){printf(str,34,str,34);}”;
int main()
{
printf(str,34,str,34);
return 0;
}
Ans...char *str=”char *str=%c%s%c;main(){printf(str,34,str,34);}";main(){printf(str,34,str,34);}
51) #include <stdio.h>
void f(char *k)
{
k++;
k[2] = 'm';
printf("%c\n", *k);
}
void main()
{
char s[] = "hello";
f(s);
printf("%s\n",s);
}
Ans...e helmo
52) #include<stdio.h>
void t1(char *q);
main()
{
char *p;
p = “abcder”;
t1(p);
}
void t1(char *q)
{
if(*q!='r')
{
putchar(*q);
t1(q++);
}
}
Ans.....aaaaaaaaaaaaaaaa.. segmentation fault
53) #include<stdio.h>
int main(){
int i;
float a=5.2;
char *ptr;
ptr=(char *)&a;
for(i=0;i<=3;i++)
printf("%d ",*ptr++);
return 0;
}
Ans..102 102 -90 64
}
Ans..error.. invalid type of argument of unary *
}
Ans..10
return 0;
}
71) #include<stdio.h>
int main(int sizeofargv, char *argv[])
{
while(sizeofargv)
printf(“%s ”,argv[--sizeofargv]);
return 0;
} if i/p is sample friday tuesday sunday
Ans....a.out
72) #include<stdio.h>
int main()
{
char *str[]={“Progs”,”Do”,”Not”,”Die”,”They”,”Croak!”};
printf(“%d %d”,sizeof(str),strlen(str[0]));
return 0;
}
Ans...24 5
73) #include<stdio.h>
int main()
{
static char *s[]={“black”,”white”,”pink”,”violet”};
char **ptr[]={s+3,s+2,s+1,s},***p;
p = ptr;
printf(“%s\n”,**p+1);
return 0;
}
Ans..iolet
74) #include<stdio.h>
main()
{
char *m[]={“jan”,”feb”,”mar”};
char d[][10] = {“sun”,”mon”,”tue”};
printf(“%s\t”,m[1]);
printf(“%s\t”,d[1]);
}
Ans..Feb mon
75) #include<stdio.h>
void fun(char **);
int main()
{
char *argv[]={“ab”,”cd”,”ef”,”gh”};
fun(argv);
return 0;
}
void fun(char **p)
{
char *t;
t=(p+=sizeof(int))[-1];
printf(“%s\n”,t);
}
Ans...gh
76) #include <stdio.h>
void first()
{
printf("first");
}
void second()
{
first();
}
void third()
{
second();
}
void main()
{
void (*ptr)();
ptr = third;
ptr();
}
Ans..first
79) #include<stdio.h>
int fun(int (*)());
int main()
{
fun(main);
printf(“Hi\n”);
return 0;
}
int fun(int (*p)())
{
printf(“Hello\n”);
return 0;
}
Ans...Hello
Hi
80) #include<stdio.h>
int main()
{
char *p = “Hello World”;
printf(p);
}
Ans..hello world
-------------------------------------------------------- END --------------------------------------------------------
A.Tandava Ramakrishna
Email:[email protected]