MSBTE I Scheme CM/IF Branch Practice MCQs of “Programming In C (22226)” UNIT-5. Function and Pointer.

 

MSBTE I Scheme CM/IF Branch Practice MCQs of “Programming In C (22226)”

 

UNIT-5. Function and Pointer.

 

1. The keyword used to transfer control from a function back to the calling function is

A. switch
B. goto
C. return
D. exit

Ans : C
Explanation: The keyword return is used to transfer control from a function back to the calling function.

 

2. What is the default return type if it is not specified in function definition?

A. void
B. int
C. float
D. short int

Ans : B

Explanation: None

 

3. The default parameter passing mechanism is

A. Call by value
B. call by reference
C. call by value result
D. None

Ans : A
Explanation: None.

 

4. Pick the correct statements.
I. The body of a function should have only one return statement
II. The body of a function may have many return statements.
III. function can return only one value to the calling environment.
IV. If return statement is omitted, then the function does its job but returns no value to the calling environment.

A. I and II
B. I and III
C. II and III
D. II anf IV

Ans : C

Explanation: None

 

5. Functions can return structure in c?

A. TRUE
B. FALSE
C. May Be
D. Can't Say

Ans : A

Explanation: Yes, functions can return structure

 

6. Forward declaration is absolutely necessary

A. If a function returns a non-integer quantity
B. If the function call precedes its definition
C. If the function call precedes its definition and the function returns a non integer quantity
D. None of the above

Ans : C

Explanation: If the function call precedes its definition and the function returns a non integer quantity



7. In C, what is the meaning of following function prototype with empty parameter list

void fun()

{

   /* .... */

}

A. Function can only be called without any parameter
B. Function can be called with any number of parameters of any types
C. Function can be called with any number of integer parameters.
D. Function can be called with one integer parameter.

Ans : B

Explanation: Empty list in C mean that the parameter list is not specified and function can be called with any parameters. In C, to declare a function that can only be called without any parameter, we should use "void fun(void)" As a side note, in C++, empty list means function can only be called without any parameter. In C++, both void fun() and void fun(void) are same.

 

8. A pointer is

A. A variable that stores address of an instruction
B. A variable that stores address of other variable
C. A keyword used to create variables
D. None of these

Ans : B

Explanation: a pointer is a programming language object that stores the memory address of another value located in computer memory. A pointer references a location in memory, and obtaining the value stored at that location is known as dereferencing the pointer.

9. The reason for using pointers in a Cprogram is

A. Pointers allow different functions to share and modify their local variables.
B. To pass large structures so that complete copy of the structure can be avoided.
C. Pointers enable complex “linked" data structures like linked lists and binary trees.
D. All of the above

Ans : D
Explanation: (A) With pointers, address of variables can be passed different functions can use this address to access the variables. (B) When large structure variables passed or returned, they are copied as everything is passed and returned by value in C. This can be costly with structure containing large data. To avoid this copying of large variables, we generally use poitner for large structures so that only address is copied. (C) With pointers, we can implement "linked" data structures. Java uses reference variables to implement these data structures. Note that C doesn't support reference variables.



10. How can you write a[i][j][k][l] in equivalent pointer expression?

A. (((***(a+i)+j)+k)+l)
B. ((**(*(a+i)+j)+k)+l)
C. (*(*(*(a+i)+j)+k)+l)
D. *(*(*(*(a+i)+j)+k)+l)

Ans : D

Explanation: *(*(*(*(a+i)+j)+k)+l)

 

11. What is wild pointer?

A. Pointer which is wild in nature
B. Pointer which has no value.
C. Pointer which is not initialized
D. None

Ans : C

Explanation: Uninitialized pointers are known as wild pointers because they point to some arbitrary memory location and may cause a program to crash or behave badly.

12. Address stored in the pointer variable is of type __________.

A. Integer
B. Float
C. Array
D. Character

Ans : A

Explanation: Pointer Variable of any type contains integer address because address of variable is always integer.

 

13. In order to fetch the address of the variable we write preceding _________ sign before variable name.

A. Percent(%)
B. Comma(,)
C. Ampersand(&)
D. Asteric(*)

Ans : C

Explanation: "&" is used to get an address of the variable.

14. Comment on this const int *ptr;

A. You cannot change the value pointed by ptr
B. You cannot change the pointer ptr itself
C. Both (a) and (b)
D. You can change the pointer as well as the value pointed by it

Ans : A
Explanation: None

 

15. Choose the best one - prior to using a pointer variable

A. It should be declared.
B. It should be initialized
C. It should be both declared and initialized.
D. None of the above.

Ans : C

Explanation: None

 

16. Which of the following statements are correct about the given program?

#include <stdio.h>

int main()

{

    printf("%p", main());

    return 0;

}

A. Prints garbage value infinite times
B. Error
C. Runs infinite times without printing anything
D. None of the above

Ans : C

Explanation: None

 

17. What is the output of this program?
#include <stdio.h>

void fun(int a, ...)

{

    printf("%d ", a);

}

 

int main()

{

    fun(1,2,3,4);

    fun(5,6,7,8,9);

    return 0;

}

A. 1 5
B. 2 5
C. 5 1
D. Compilation Error

Ans : A

Explanation: In c three continuous dots is known as ellipsis which is variable number of arguments of function. .

 

18. What is the meaning of using static before function declaration?

static int demo(int a, int b)

{

    return (a + b);

}

A. Access to static functions is restricted to the file where they are declared
B. Static means nothing, sum() is same without static keyword.
C. Function need not to be declared before its use
D. None of the above

Ans : A

Explanation: static functions are restricted to the file where they are declared.

 

19. What is the output of this program?

#include <stdio.h>

int demo()

{

  static int i = 0; 

  printf("%d ",i++);

}

int main()

{

  for(int j = 0 ; j < 5 ; j++ )

  {

      demo();

  }

}

A. 0 0 0 0 0
B. 1 1 1 1 1
C. 1 2 3 4 5
D. 0 1 2 3 4

Ans : D
Explanation: Value of i will be initialized once and then the previous value is used when function is called . Initially i = 0 and function is called value of i is printed and incremented by 1 and now again function is called the value printed will be 1 and then incremented and process repeat till the funtion is called .



20. What is the output of this program?
include <stdio.h>

int test()

{

  static int n = 10;

  return n--;

}

 

int main()

{

  for(test(); test(); test())

    printf("%d ", test());

  return 0;

}

A. 7 4 1
B. 8 5 2
C. Infinite loop
D. Compilation Error

Ans : B

Explanation: None

 

21. What is the output of this program?

int main()

{

  void test(), temp();

  temp();

}

void test()

{

  printf("2 ");

}

void temp()

{

  printf("1 ");

  test();

}

A. 1 0
B. 0 1
C. Compile time error as foo is local to main
D. Compile time error due to declaration of functions inside main

Ans : A

Explanation: None



22. What is the output of this program?

#include <stdio.h>

void main()

    {

        test();

        void test()

        {

            printf("1");

        }

    }

A. 1
B. Compilation Error
C. Run Time Error
D. None of the above

Ans : B

Explanation: test is called before declaration or defination .



23. What is the output of this program?

#include <stdio.h>

void test(int * , int *);

void main()

{

  int a = 5 , b = 6;

  test(&a,&b);

  printf("%d %d",a,b);

}

void test(int *p, int *q)

{

  *p = *p * *q;

  *q = *p / *q;

  *p = *p / *q;

}

A. 30 5
B. 6 5
C. 5 6
D. None of the above

Ans : B
Explanation: function test will swap the values .



24. What is the output of this program?

#include <stdio.h>

void test(char**);

 

int main()

{

    char *argv[] = {"a", "b", "c", "d"};

    test(argv);

    return 0;

}

void test(char **p)

{

    char *m;

    m = (p+= sizeof(int))[-2];

    printf("%s", m);

}

A. a
B. b
C. c
D. d

Ans : C

Explanation: None



25. What is the output of this program?

#include <stdio.h>

int main()

{

 char *ptr = "Hello";

 printf("%c", *&*&*ptr);

 return 0;

}

A. H
B. Compilation Error
C. Run Time Error
D. Garbage Value

Ans : A

Explanation: The operator * is used for dereferencing and the operator & is used to get the address. These operators cancel out effect of each other when used one after another. Therefore here only * left after cancelation so H will be printed since value at base address is H.


26. What is the output of this program?

#include <stdio.h>

void test(int *a, int *b)

{

  a = b;

  *a = 15;

}

int x = 10, y = 20;

int main()

{

  test(&x, &y);

  printf("%d %d", x, y);

  return 0;

}

A. 15 15
B. 10 15
C. 10 20
D. 15 20

Ans : B

Explanation: None



27. What does the following statment mean?

    int (*ptr)[5];

A. ptr is an array of 5 integers
B. ptr is a pointer to an array of 5 integers
C. ptr is array of pointers to 5 integers
D. ptr is an pointer to array

Ans : B

Explanation: None



28. What is the output of this program? 

#include <stdio.h>

int main()

{

int a = 5;

void *ptr = &a ;

printf("%f", *(float*)ptr);

return 0;

}

A. 5
B. 5
C. 0
D. 0

Ans : C

Explanation: None



29. What is the output of the given code ?

#include <stdio.h>

void main()

{

int a = 0 ;    

int *const ptr = &a ;

printf("%p ", ptr);

ptr++;

printf("%p ", ptr);

}

A. 0 1
B. compilation Error
C. Run Time Error
D. None of the above

Ans : B

Explanation: constant pointer cannot be modified .



30. What is the output of this program?

#include <stdio.h>

void main()

{

int a = 5 ;

int *b = &a ;

int **c = &b ;

printf("%d %d %d", a, *b, **c);

}

A. 5 garbage value garbage value
B. 5 5 garbage value
C. 5 5 5
D. Error

Ans : C

Explanation: None

 

31. What is the output of this program?
#include <stdio.h>

void main()

{

int arr[3] = {1, 2, 3};

int *ptr = arr;

int **temp = &ptr ;

printf("%p %p", *temp, arr);

}

A. Same Address
B. Different Address
C. 1 2
D. 2 3

Ans : A

Explanation: None



32. The pointer ptr points to which string?

char *ptr;

char myString[]="letsfind";

ptr=myString

ptr+=5;

A. find
B. ind
C. letsf
D. f

Ans : B

Explanation: ptr+=5 means ptr=ptr+5 That means the pointer variable is incremented by 5. Hence it is pointing to the 6th location.



33. What will be the output ?
void main()

{

char far *farther, *farthest;

printf("%d %d", sizeof(farther), sizeof(farthest));

}

A. 4 2
B. 2 2
C. 4 4
D. 2 4

Ans : A
Explanation: None



34. What is the output of this program?
#include <stdio.h>

void test(int * , int *);

void main()

{

  int a = 5 , b = 6;

  test(&a,&b);

  printf("%d %d",a,b);

}

void test(int *p, int *q)

{

  *p = *p * *q;

  *q = *p + *q;

  *p = *p - *q;

}

A. -6 36
B. 6 36
C. 36 6
D. -42

Ans : A
Explanation: -6 36 is the output of this program.



35. Will the program compile?

#include<stdio.h>

int main()

{

    char str[5] = "Letsfind";

    return 0;

}

A. TRUE
B. FALSE
C. May Be
D. Can't Say

Ans : A

Explanation: C doesn't do array bounds checking at compile time, hence this compiles.But, the modern compilers like Turbo C++ detects this as 'Error: Too many initializers'.GCC would give you a warning.



36. Are the three declarations char **apple, char *apple[], and char apple[][] same?

A. TRUE
B. FALSE
C. May Be
D. Can't Say

Ans : B
Explanation: Are the three declarations char **apple, char *apple[], and char apple[][] is not same.



37. Is the NULL pointer same as an uninitialised pointer?

A. Yes
B. No
C. May Be
D. Can't Say

Ans : B

Explanation: No the NULL pointer same as an uninitialised pointer.



38. Which of the following statements correct about k used in the below statement?

char ****k;

A. k is a pointer to a pointer to a pointer to a char
B. k is a pointer to a pointer to a pointer to a pointer to a char
C. k is a pointer to a char pointer
D. k is a pointer to a pointer to a char

Ans : B

Explanation: k is a pointer to a pointer to a pointer to a pointer to a char



39. Is there any difference between the following two statements?

char *p=0;

char *t=NULL;

A. Yes
B. No
C. May Be
D. Can't Say

Ans : B

Explanation: NULL is #defined as 0 in the 'stdio.h' file. Thus, both p and t are NULL pointers.



40. Is this a correct way for NULL pointer assignment?

int i=0;

char *q=(char*)i;

A. Yes
B. No
C. May Be
D. Can't Say

Ans : B

Explanation: The correct way is char *q=0 (or) char *q=(char*)0.

 

loading...

1 Comments

Previous Post Next Post