Which of the following statements about pointers in C are TRUE. (A) Pointers can be used to access array elements (B) Pointers can store the address of another pointer (C) Pointers are automatically deferenced in expression (D) Pointers cannot be used to access structure members Choose the correct answer from the options given below :
(A) and (B) Only
A pointer in C is a variable that holds a memory address. It is dereferenced only when the programmer applies the * (or -> / [ ]) operator.
(A) is true: array elements can be reached through pointers, since a[i] is defined as *(a + i); a pointer p = a can step through the array with p++.
(B) is true: a pointer to a pointer is legal, for example int **pp = &p; stores the address of the pointer p.
(C) is false: C never dereferences a pointer automatically; in an expression a pointer evaluates to the address it holds, and the value at that address is obtained only with an explicit *.
(D) is false: structure members are accessed through pointers with the arrow operator, ptr->member, which means (*ptr).member.
So (A) and (B) are the true statements; any choice including (C) or (D) is wrong.
(A) and (B) Only option is correct.
What is the output of the following program ?
(Assume that the appropriate preprocessor directives are included and there is no syntax error)
main ( )
{ char S[ ]="ABCDEFGH";
printf ("%C", * (& S[3]));
printf ("%s", S+4);
printf ("%u", S);
/* Base address of S is 1000 */
}
What will be the output of the following C code?
#include<stdio.h>
void main()
{
int arr[5] = {10, 20, 30, 40, 50};
int *p = (int*) (&arr + 1);
printf("%d%d", *(arr + 1), *(p - 1));
}
Which of the following is correct way to declare a functional pointer in C ?
Consider following C program :
#include<stdio.h>
int main()
{
int x[]={2, 4, 6, 8, 10};
int a, b=0, *y=x+4;
for(a=0; a<5; a++)
{
b=b+(*y-a)-*(y-a);
}
printf("%d\n", b);
return 0;
}
What will be the output of the above C program ?
Consider the following code :
#include<stdio.h>
void f1(char *x, char *y) {
char *t1; t1=x; x=y; y=t1;}
void f2(char **x, char **y) {
char *t1; t1=*x; *x=*y; *y=t1;}
int main()
{
char *a="ONE", *b="TWO";
f1(a, b); printf("%s %s", a, b);
f2(&a, &b); printf("%s %s", a, b);
return 0;
}
What will be the output of the above code?
#include<stdio.h>
void main()
{
int arr[]={1, 2, 3, 4, 5};
int *p=arr;
printf("%d", *p++);
printf("%d", *(p+1));
}
Find the output of the above code?
What does the following expression means ?
char *(*(* a[N]) ( )) ( );
What is the output of the following C programming language code?
#include<stdio.h>
int main()
{
int x = 10;
int *p = &x;
*p = *p + 5;
printf("%d %d", x, *p);
return 0;
}
Consider the following ANSI-C program.
#include <stdio.h>
int main(){
int *ptr, a, b, c;
a=5; b=11; c=20;
ptr=&a; *ptr=c; ptr=&c;
a=*(&b); c=*ptr-a;
printf("%d",c);
return(0);
}
The output of this program is ____________. (answer in integer)
Note: Assume that the program compiles and runs successfully.