In C, what is the result of the expression (5 & 3)?

  • 0
  • 1
  • 3
  • 5
In C, the '&' operator is the bitwise AND operator. When you perform (5 & 3), it bitwise ANDs the binary representation of 5 (0101) and 3 (0011). The result is 0001, which is 1 in decimal.

What is the behavior of malloc when the size requested is zero?

  • It goes into an infinite loop
  • It returns a null pointer (NULL)
  • It returns a pointer to a zero-sized memory block
  • It returns an error
When you request zero bytes of memory using malloc, it returns a null pointer (NULL) rather than allocating a zero-sized memory block. This is useful for special cases when you need a pointer that doesn't point to any memory.

How can double pointers be used in dynamic memory allocation in C?

  • To allocate multi-dimensional arrays
  • To create pointer arrays
  • To manage pointer arithmetic
  • To pass a pointer to a pointer
Double pointers are used in dynamic memory allocation when you need to pass a pointer to a pointer (to allocate and manage multi-dimensional arrays) or create arrays of pointers. They provide an extra level of indirection, which is beneficial for managing memory efficiently.

What is the time complexity of the linear search algorithm in the worst case?

  • O(1)
  • O(log n)
  • O(n)
  • O(n^2)
The linear search algorithm has a worst-case time complexity of O(n) because in the worst scenario, it needs to iterate through the entire array to find the target element.

You're developing an embedded system with limited memory and need to define several constants representing the states of a system. Which C construct would be most appropriate to use?

  • Using functions
  • Using global variables
  • Using local variables
  • Using macros
In an embedded system with limited memory, using macros would be most appropriate for defining constants as they are preprocessor directives and are more memory-efficient than global or local variables. Functions are not used for constants.

You are working on a software project in C++ that requires sorting a list of items in multiple ways. How could you leverage function overloading to achieve this?

  • Define multiple functions with the same name but different parameters for each sorting method.
  • Implement a single function with the most generic sorting algorithm to handle all sorting needs.
  • Use inline functions for sorting, allowing for multiple sorting methods within one function.
  • Utilize global variables to store sorting methods for easy access and reuse.
Function overloading in C++ allows you to define multiple functions with the same name but different parameters, enabling the use of various sorting methods for different data types.

How do you declare a pointer to an integer in C?

  • int ptr;
  • int* ptr;
  • int_pointer ptr;
  • pointer(int) p;
To declare a pointer to an integer in C, you use the format int* ptr;. This declares a pointer variable named ptr that can store the address of an integer.

How does the 'register' keyword affect the storage of a variable in a C program?

  • It's allocated in a CPU register
  • It's allocated in the data segment
  • It's allocated in the heap
  • It's allocated in the stack
The 'register' keyword suggests to the compiler to store the variable in a CPU register, which can lead to faster access. However, it's just a hint, and the compiler may choose to ignore it.

You are tasked with optimizing a C program that manipulates large strings. What standard library functions might be critical to review for potential performance bottlenecks?

  • getchar() and putchar()
  • malloc() and free()
  • printf() and scanf()
  • strlen() and strcat()
When optimizing a C program that manipulates large strings, functions like strlen() and strcat() should be reviewed for potential performance bottlenecks as they involve string manipulation and can be resource-intensive.

An array of structures in C allows you to store multiple records, where each record can have ________ of different data types.

  • Elements
  • Fields
  • Files
  • Functions
An array of structures allows you to store multiple records, where each record can have fields of different data types. Fields represent the individual members of each structure.