• Courses
  • Tutorials
  • Jobs
  • Practice
  • Contests

C Pointer Basics

Question 1

What is the output of following program? C
# include <stdio.h>
void fun(int x)
{
    x = 30;
}

int main()
{
  int y = 20;
  fun(y);
  printf(\"%d\", y);
  return 0;
}
  • 30
  • 20
  • Compiler Error
  • Runtime Error

Question 2

Output of following program? C
# include <stdio.h>
void fun(int *ptr)
{
    *ptr = 30;
}

int main()
{
  int y = 20;
  fun(&y);
  printf(\"%d\", y);

  return 0;
}
  • 20
  • 30
  • Compiler Error
  • Runtime Error

Question 3

Output of following program? C
#include <stdio.h>

int main()
{
    int *ptr;
    int x;

    ptr = &x;
    *ptr = 0;

    printf(\" x = %d\\n\", x);
    printf(\" *ptr = %d\\n\", *ptr);

    *ptr += 5;
    printf(\" x  = %d\\n\", x);
    printf(\" *ptr = %d\\n\", *ptr);

    (*ptr)++;
    printf(\" x = %d\\n\", x);
    printf(\" *ptr = %d\\n\", *ptr);

    return 0;
}
  • x = 0
    *ptr = 0
    x = 5
    *ptr = 5
    x = 6
    *ptr = 6
  • x = garbage value
    *ptr = 0
    x = garbage value
    *ptr = 5
    x = garbage value
    *ptr = 6
  • x = 0
    *ptr = 0
    x = 5
    *ptr = 5
    x = garbage value
    *ptr = garbage value
  • x = 0
    *ptr = 0
    x = 0
    *ptr = 0
    x = 0
    *ptr = 0

Question 4

Consider a compiler where int takes 4 bytes, char takes 1 byte and pointer takes 4 bytes. C
#include <stdio.h>

int main()
{
    int arri[] = {1, 2 ,3};
    int *ptri = arri;

    char arrc[] = {1, 2 ,3};
    char *ptrc = arrc;

    printf(\"sizeof arri[] = %d \", sizeof(arri));
    printf(\"sizeof ptri = %d \", sizeof(ptri));

    printf(\"sizeof arrc[] = %d \", sizeof(arrc));
    printf(\"sizeof ptrc = %d \", sizeof(ptrc));

    return 0;
}
  • sizeof arri[] = 3 sizeof ptri = 4 sizeof arrc[] = 3 sizeof ptrc = 4
  • sizeof arri[] = 12 sizeof ptri = 4 sizeof arrc[] = 3 sizeof ptrc = 1
  • sizeof arri[] = 3 sizeof ptri = 4 sizeof arrc[] = 3 sizeof ptrc = 1
  • sizeof arri[] = 12 sizeof ptri = 4 sizeof arrc[] = 3 sizeof ptrc = 4

Question 5

Assume that float takes 4 bytes, predict the output of following program. C
#include <stdio.h>

int main()
{
    float arr[5] = {12.5, 10.0, 13.5, 90.5, 0.5};
    float *ptr1 = &arr[0];
    float *ptr2 = ptr1 + 3;

    printf(\"%f \", *ptr2);
    printf(\"%d\", ptr2 - ptr1);

   return 0;
}
  • 90.500000 3
  • 90.500000 12
  • 10.000000 12
  • 0.500000 3

Question 6

C
#include<stdio.h>
int main()
{
    int arr[] = {10, 20, 30, 40, 50, 60};
    int *ptr1 = arr;
    int *ptr2 = arr + 5;
    printf(\"Number of elements between two pointer are: %d.\", 
                                (ptr2 - ptr1));
    printf(\"Number of bytes between two pointers are: %d\",  
                              (char*)ptr2 - (char*) ptr1);
    return 0;
}
Assume that an int variable takes 4 bytes and a char variable takes 1 byte
  • Number of elements between two pointer are: 5. Number of bytes between two pointers are: 20
  • Number of elements between two pointer are: 20. Number of bytes between two pointers are: 20
  • Number of elements between two pointer are: 5. Number of bytes between two pointers are: 5
  • Compiler Error
  • Runtime Error

Question 7

C
#include<stdio.h> 
int main() 
{ 
   int a; 
   char *x; 
   x = (char *) &a; 
   a = 512; 
   x[0] = 1; 
   x[1] = 2; 
   printf(\"%d\\n\",a);   
   return 0; 
}
What is the output of above program?
  • Machine dependent
  • 513
  • 258
  • Compiler Error

Question 8

C
int main()
{
 char *ptr = \"GeeksQuiz\";
 printf(\"%c", *&*&*ptr);
 return 0;
}
  • Compiler Error

  • Garbage Value

  • Runtime Error

  • G

Question 9

C
#include<stdio.h>
void fun(int arr[])
{
  int i;
  int arr_size = sizeof(arr)/sizeof(arr[0]);
  for (i = 0; i < arr_size; i++)
      printf(\"%d \", arr[i]);
}

int main()
{
  int i;
  int arr[4] = {10, 20 ,30, 40};
  fun(arr);
  return 0;
} 
  • 10 20 30 40
  • Machine Dependent
  • 10 20
  • Northing

Question 10

The reason for using pointers in a C program is

  • Pointers allow different functions to share and modify their local variables.

  • To pass large structures so that complete copy of the structure can be avoided.

  • Pointers enable complex “linked" data structures like linked lists and binary trees.

  • All of the above

There are 43 questions to complete.

Last Updated :
Take a part in the ongoing discussion