C and C++ Interview Questions and Answers

Operating systems are written in the computer language C. Because C programs are stand-alone applications, you can move them to other machines that are comparable to you without needing the source code. C programmers have access to low-level computer processes.  On the other hand, one of the most widely used imperative, object-oriented programming languages for general-purpose use is C++. Ever since its introduction in the middle of the 1980s, C++ has only grown in popularity. 

As a result, finding work as a C++ programmer at a prestigious US MNC is quite difficult. These C and C++ interview questions help you ace your C++ interview and demonstrate your abilities to cut. Join SLA Jobs to find the best course for your promising career.

Basic Interview Questions on C and C++

Define C.

Programming languages for computers can be found in C. Dennis Ritchie created it in the 1970s, and it is still highly popular and significant today. The features of C are intended to accurately match the capabilities of the targeted CPUs. 

What makes you fond of C programming?

It offers a simple, reliable, and strong interface for system programming. Because of this, system software, application software, and embedded system development are all frequently done in C. Numerous different programming languages have been derived from the widely influential C language.

Get yourself updated with our top HR interview questions and answers to get selected easily.

What are the most important skills for a C programmer?

In addition to solving code problems and doing research, a competent C programmer will also make sure that C is the best language to employ when designing the application the client has asked for. Skilled C programmers can approach challenges in a variety of ways to identify workable solutions.

What makes programming in C the best?

One important aspect of C that makes it perfect for system programming (operating systems and embedded devices) is that it can do pointer arithmetic and access arbitrary memory addresses. At the hardware/software boundary, computer systems and microcontrollers map the locations of their peripherals and I/O pins into memory.

Give me a few applications of C. 

Operating system applications, 3D movies, intermediate language development, and the creation of new programming languages for embedded systems.

What distinguishes a constant from a variable?

The interviewer can begin by asking you a few basic C programming words and concepts. These kinds of questions let you feel at ease and help create the tone for the interview. To respond to this question, give a quick definition of constants and variables as well as an explanation of how the C language uses them.

Answer: As the equation is solved, the value of a constant remains constant. In contrast, a variable’s value varies according to the equation. Whether they are fractions, integers, decimals, or real numbers, constants are typically expressed as numbers. Letters or symbols are used to represent variables.

Here we have come up with the top 20 interview questions and answers for freshers in IT.

Explain the roles that an interpreter and a compiler play.

Compilers and interpreters both run program codes in the C language, although they do it in distinct ways. The interviewer wants to know if you are aware of these distinctions, which is why they are asking this question. Explain the differences between file execution procedures and what can prevent an interpreter or compiler from running a file to respond to this question.

Answer: Code written in a high-level programming language such as assembly language, object method, or machine code (binary 1 and 0 bits) can be translated into a lower-level language using a compiler. The code is pre-converted before the program executes. When the program is operating, an interpreter translates the code line by line.

What distinguishes object codes from source codes?

With this question, the interviewer hopes to gauge your understanding of source codes, object codes, and the processes involved in producing these codes. From the perspective of practical application, this understanding is crucial. To demonstrate your awareness of various file extensions, answer this question by quickly describing the differences between the two sorts of codes and mentioning the extensions used to preserve these codes.

Answer: An assembler, compiler, or other kind of translator takes input in the form of source code. An assembler, compiler, or other kind of translator produces object code as its output. It is not a particular kind of code for a system. Since it operates on computers with ease, this kind of programming is system-specific.

What distinguishes run-time, logical, and syntactic errors?

Runtime mistakes happen as the code is executing; logical errors are connected to the behavior of the code; and syntax errors are related to the structure of the code. When a program is being executed, an error happens. Compile-time errors, on the other hand, happen during the compilation process of a program.

How do you add a comment to a C program and what does it mean?

In C programming, a comment can be used to describe the purpose of a program or provide an explanation for the inclusion of a particular function or piece of code. We can put text within a program and encircle it with the / / letters to add a comment. Anywhere in the program is where we can insert comments. The program does not read the comments while it is running; they are written just for human use and reading.

In every C program, should all header files be declared?

Every C program doesn’t need to declare every header file. In a C program, the commands and functions we would use are the only ones that require us to declare header files.

When in a function should the keyword “void” be used?

When we declare a function, we have to determine whether or not it will return a value. If the function yields no value, we employ the keyword “void,” which is positioned at the leftmost section of the function header.

What characteristics does the C language have?

The C language’s attributes include speed, dynamic memory management, extensibility, function-rich libraries, ease of use, efficiency, portability, and structured programming.

What does a token mean in C?

A token is the smallest discrete unit of a program in C programming. It may be an operator, constant, string literal, operator, keyword, or identifier.

Suggested Article: .Net Interview Questions and Answers 

Python Interview Questions and Answers

In C, what is recursion?

When a function in C calls itself to solve an issue by dissecting the problem into smaller instances of the same problem, this is known as recursion. This method works well for breaking down difficult problems into smaller, more manageable pieces.

What are the purposes of the functions printf() and scanf()?

Commonly used C functions for input and output operations include printf() and scanf().

  • To show formatted output on the console or terminal, use the printf() function. It enables you to print literals and variables in a predetermined format.
  • To read data from a file or the user, use scanf(). It enables you to take in values and store them in variables according to the predetermined structure.

How do Call by Reference and Call by Value differ from one another?

Call by Reference transmits the variable’s address, whereas Call by Value sends the variable’s value as an argument to a function. Furthermore, while using Call by Reference, values could be impacted by the actions taken inside the function, but when using Call by Value, the value in the argument is not impacted by any actions taken.

In C, how do you create an increment or decrement statement?

This can be accomplished in two different ways. Using the increment operator (++) and the decrement operator (-) is one method. For instance, the expression “x++” indicates increasing x’s value by 1. Similarly, to decrease the value of x by 1, use the expression “x –”. The standard + plus or – minus symbol can also be used to write increment statements. One alternative approach to writing “x++” is “x = x +1.”

Explore the top data science interview questions and answers

Instead of removing certain codes, some programmers use comment symbols to help them debug their programs. How is this useful for debugging?

By enclosing a code with the comment symbol /* */, often known as “commenting out,” you can isolate specific codes that you believe may be causing software faults without actually deleting the code. The idea is to just remove the comment symbols and carry on if the code is, in fact, correct. Additionally, it saves you time and effort from having to retype the codes if you initially deleted them.

In WHILE LOOP format, what is the corresponding code for the following statement?

for (a=1; a<=100; a++)

printf (“%d\n”, a * a);



while (a<=100) 


printf (“%d\n”, a * a);



In comparison to other programming languages, why would you select C++?

C++ is the preferred language for software engineers due to its notable benefits, which include:

  • Because it is portable, developers can use it on any platform or operating system.
  • It has many functional libraries.
  • Inheritance, polymorphism, and friend functions are supported in C++.
  • Additional data protection is provided via the C++ language’s data hiding.

Useful Article: Object Class in Java

What is your knowledge of C++ scopes?

This is a frequently asked question-and-answer set for C++ interviews. The scope of a variable is the area in which it is active. The variable is therefore declared, defined, and usable within scope. There are two different kinds of scopes in C++:

Local scope: A variable is said to be in a local scope and accessible outside the block of code when it is declared inside the block and stays active only inside that block.

Global scope: A variable is in the global scope and accessible from anywhere in the program when it is stated at the start of the code.

What distinguishes the equal-to operator (==) from the assignment operator (=)?

In complicated equations, the assignment operator (=), which gives the variable a value, can occasionally be employed.

When comparing two values, the equality operator ‘equal to’ (==) is utilized. If they are equal, it returns true; if not, it returns false.

Describe comments using C++ in context.

Programs do not contain comments; comments are the source code that the compiler skips. The comments are meant to alert the programmer to new information. It offers information regarding the source code. In C++, there are two kinds of comments:

Single-line comment: The compiler treats everything in a line that comes after “//” as commenting and ignores everything else.

Multiple comments: Block comments, sometimes known as multiline comments, are written with the notation “/* ” “*/ “; the compiler ignores everything in between.

Learn about the strings in Java

What does C++’s getline function do?

The header file defines the built-in C++ function getline(), which is part of the standard library. It supports both single- and multiple-line reading and acceptance.

A singleton design pattern: what is it?

You can use design patterns as repeatable fixes for common object-oriented design issues. The category of creational design patterns includes singleton design patterns. This pattern aids in creating classes that can have no more than one instance at a time. It can’t be further instantiated. A hardware interface class or logger can be created using the singleton design pattern.

Which operators are immune to overloading?

It is impossible to overload the following operators:

  • ?: – conditional operator
  • .*: dereferencing operator
  • sizeof: sizeof operator
  • :: – scope resolution operator
  • . – Dot operator
  • ->: member dereferencing operator

What aspects of RTTI are you aware of?

Run-time type information, or RTTI, is an acronym. This approach provides runtime data type information for an object. Only classes with at least one virtual function can use it. An object’s type can be ascertained while the application is running.

Explore the various types of Java applications and brush up on your skills.

The sparse matrix: what is it?

A sparse matrix is an array of items in which a large number of members have a value of zero. A matrix is sparse if, for example, it has several elements and the number of zeros exceeds half of the elements in the matrix.

What is your knowledge of C++ smart pointers?

Garbage collection uses smart pointers to make sure there are no memory leaks. When using smart pointers, any dynamically allocated memory is immediately deallocated, so you don’t need to run delete on it. In C++11 and later versions, smart pointers can be implemented. There are four different types of smart pointers in C++11:

  • auto_ptr
  • unique_ptr
  • shared_ptr
  • weak_ptr.

What function do the ‘void’ and ‘this’ pointers serve?

This Pointer: All objects’ member functions contain the ‘this pointer’. It can be used to access the object’s data and point to the actual object.

Void Pointer: A pointer is referred to as void if it is not associated with a data type. Any kind of pointer can be assigned to a void pointer, but unless you use it in the manner described below, the opposite isn’t true.

str=(char*) ptr;.

Do you want to know the top 15 interesting facts about Java?

How well-versed in pure virtual functions are you?

A member function in the base class that is redefiningable in a derived class is called a virtual function. You can use the virtual keyword to declare it. A pure virtual function, on the other hand, lacks implementation. It is declared by assigning 0 and has no body.

Can a virtual function be called from a constructor?

A virtual function can indeed be called from a constructor. But in that instance, the behavior is different. A virtual call is handled at runtime when you make it to a virtual function. The constructor is not where the virtual machine operates.

In C++, what does namespace std mean?

You can access the elements of the std namespace without explicitly stating it by using the C++ directive namespace std. This implies that you don’t need to write std::cout, std::endl, etc. to utilize cout, endl, and other standard library parts directly.

Nevertheless, naming conflicts could result from utilizing this directive, particularly if you have several namespaces. It is advised against utilizing it for more extensive undertakings.

What is a C++ function’s return type?

A function in C++ can return any valid data type, including built-in data types like int, float, and double, as well as user-defined data types like classes and structs. The return data type appears before the function name when a function is declared, indicating the function’s return type. An integer-returning function, for instance, might have the following declaration:

int square(int x);

which indicates that an integer argument is accepted by the function and an integer value is returned.

Useful to know: Multithreading in Python

In C++, how are function arguments passed?

When the function is invoked with parameters supplied by value, copies of the argument values are produced and passed to it. The initial values in the calling code are unaffected by modifications made to the arguments within the function.

In contrast, the memory address of the parameters is supplied to the function when it is called with arguments passed by reference. This enables the function to access and change the arguments’ initial values in the calling code directly.

It’s vital to remember that, particularly when dealing with big objects or data structures, passing parameters by reference can often be more performant than passing by value. Passing by value, however, can be helpful if you want to make sure the function doesn’t change the original data.

In C++, what is function overloading?

Programmers can define numerous functions with the same name but distinct parameter lists thanks to C++’s function overloading functionality. This gives you more flexibility and readable code because you can define functions with the same name but various input/output behaviors.

A single function name can be used to handle several data types and operations thanks to function overloading. What is method overloading in Python?

In C++, what is typecasting?

In C++, type casting is a method for converting one data type to another. It aids in guaranteeing programming flexibility and compatibility. There are two kinds of casting available in C++: implicit and explicit.

Implicit casting is carried out automatically by the compiler, whereas explicit casting requires the programmer to explicitly change the data type. When carrying out particular tasks or working with mixed data types, this can be helpful.

In C++, what is a stream?

In C++, an abstraction that supports input and output operations is called a stream. It is a series of characters that are written to or read from a particular device, like a file or console.

Streams offer a practical means of managing input and output consistently. Various kinds of streams exist, including the standard output stream (cout) and the standard input stream (cin).

What is the number of keywords in C++?

In C++, there are 95 reserved keywords. These terms cannot be overused or reinterpreted because they have specific meanings.

“Alignas”, “auto”, “bool”, “class”, “double”, “for”, “if”, “namespace”, “return”, and “while” are a few instances of these keywords.

Which C++ operator is immune to overloading?

In C++, the operator “scope resolution” (::) cannot be overloaded. Accessing global variables, functions, and classes from beyond their defined scope is possible with the use of this operator. Refusing to permit overload guarantees uniformity in the way items are accessed at different scopes. On the other hand, overloading other operators provides flexibility and allows user-defined types to have customized behavior.

In C++, what is an exception?

In a C++ program, an exception is an object that is thrown during runtime in response to unusual behavior or circumstances. To address an unusual situation or problem, it offers a mechanism to move data and control from one area of the program to another.

In C++, handling exceptions entails using the throw keyword to throw one, the try-catch block to catch it, and the catch block to handle it appropriately.

Get to know why you should learn Python for a bright future.

What is Visual C++?

One of the programming languages included in Microsoft’s Visual Studio IDE is Visual C++. The main use for it is in Windows program development. It offers several capabilities and libraries that facilitate system-level programming and the creation of graphical user interfaces.

Visual C++ is a popular programming language for creating high-performance applications that support both managed and unmanaged code.

How is the C++ compiler handling vTable and vptr?

The table containing the function pointers is called vTable. Moreover, a single pointer to a vTable is contained in vptr. Since every class has a vTable, a vptr is present in every object. To use and maintain vptr and vTable, the C++ compiler adds extra code in two locations:

Constructor: This code in each constructor sets up vptr: Of the object that is being configured to reference the vTable of the class

Polymorphic Function Call: Every time a polymorphic call is made, the compiler inserts code to search for vptr using the base class pointer or reference. It is possible to access the vTable of a derived class after the vptr has been correctly obtained. The address of the derived class method display() is obtained and called using the vTable. Learn about Polymorphism in OOPs

Advanced C and C++ Interview Questions for Experienced Professionals

What benefits and drawbacks come with a heap?

It takes longer to store data on the heap than it does on the stack. But the versatility of the heap is its greatest benefit. This is because memory can be added and removed from this structure in any sequence. An algorithm’s slowness on the heap may be made up for with careful planning and execution.

Do you want to know the future of RPA developers? Click here.

The integer’s size is dependent upon what?

It is explained in the C standard that an integer must have a minimum size of 16 bits. It is explained in several programming languages that while an integer’s size depends on the implementation, portable programs shouldn’t rely on it.

The type of compiler that was created by the compiler writer for the underlying processor primarily determines the size of an integer. Compilers can be shown happily altering integer sizes based on underlying architectures and convenience. Therefore, I advise against using normal int and instead use the C99 integer data types (uin8_t, uin16_t, uin32_t, etc.).

Are ++*ptr and *++ptr the same expressions?

There are differences between the two expressions. To show how these two expressions differ, let’s look at an example of code.


int main(void)


    int aiData[5] = {100,200,300,400,500};    

    int *piData = aiData;


    printf(“aiData[0] = %d, aiData[1] = %d, *piData = %d”, aiData[0], aiData[1], *piData);

    return 0;


Output: 101 , 200 , 101

Reason: Two operators with the same precedence and right-to-left associativity are involved in the example above. Thus, ++*p, the equation above, is equal to ++ (*p). To put it another way, the output is 101, 200, 101 and the pre-increment of value is 101.


int main(void)


    int aiData[5] = {100,200,30,40,50};

    int *piData = aiData;


    printf(“aiData[0] = %d, aiData[1] = %d, *piData = %d”, aiData[0], aiData[1], *piData);

    return 0;


Output: 100, 200, 200

Reason: There are two operators in the case above, and they both have the same precedence with right-to-left associativity. Thus, *++p, as used above, is equal to *(++p). Put another way, the output is 100,200,200, and the pre-increment of the address.

Visit this page to know CTS salaries for freshers.

In C++, what is a constructor?

In C++, a constructor is a unique member function used to initialize class objects. It is triggered automatically upon the creation of a class object. The class and it share the same name. It is possible for constructors to have parameters or not.

This is an example of a C++ constructor:

#include <iostream>

class MyClass




std::cout << “Constructor Called!” << std::endl;


MyClass(int value)


std::cout << “Constructor called with value:” << value << std::endl;



int main()


MyClass obj1;

MyClass obj2(5);

return 0;

In C++, what is encapsulation?

A key idea in C++ is encapsulation, which enables procedures and data to be grouped inside classes. Because an object’s interior workings can be concealed from outside observers, it encourages data hiding. This gives interface and implementation a distinct separation, increasing code modularity and decreasing dependency.

Encapsulation improves security by limiting unauthorized modifications and ensuring that data can only be accessed and altered via approved procedures.

Discover IBM salaries for freshers and upgrade as per the requirement.

What does C++ inheritance mean?

A class in C++ can inherit characteristics and actions from another class thanks to a feature called inheritance. This is beneficial because it facilitates the development of a class hierarchy and encourages the reuse of code. This is an example of how inheritance is done in C++:

class Vehicle //base class



void horn()


cout<< “Beep Beep” << endl;



class Car : public Vehicle //derived class



void accelerate()


cout<<”Car is starting”<<endl;



int main()


Car myCar;



return 0;


In C++, what is an abstraction?

In C++, an abstraction is a simplified representation of a complex system or idea. Programmers can build user-defined kinds or classes that encapsulate functions and data while concealing from consumers the specifics of their implementation.

Abstractions facilitate the management of complexity, encourage the reuse of code, and improve modularity. They make it possible for engineers to operate at a more abstract level, which facilitates the understanding and upkeep of code.

In C++, what is a member function?

In C++, a function declared inside a class is referred to as a member function. It is a member of the class and has access to the other member functions and member variables. This is an example of a class that has a member function:


Class MyClass



void myMemberFunction()


std::cout<<”This is a member function.<<std::endl;



int main()


MyClass obj;


return 0;}

Learn how to answer the ‘tell me about yourself’ question

In C++, what is runtime polymorphism?

In C++, the ability of an object of a derived class to be considered an object of its base class at runtime is known as runtime polymorphism. It enables many objects to be accessed and modified via a shared interface that is supplied by their base class.

Runtime polymorphism in C++ is accomplished by dynamic binding and virtual functions. It is possible for derived classes to override a member function that is specified as virtual in a base class. The runtime determines the appropriate function to invoke based on the object’s real type.

How is the C++ goto statement used?

One branching statement that lets you move control to a designated statement inside the same function is the goto statement. However, because goto can make code more difficult to comprehend and maintain, it is typically regarded as bad practice.

Instead, it is advised to make use of structured programming features like conditional statements and loops.

The goto command in C++ has the following syntax:

goto label;






using namespace std;

int main()


int number;

cout<<” Enter a positive integer:”;


if (number <= 0)


cout << “Invalid number.”<<endl;

goto end;


cout<<”The number is: <<number <<endl;


cout<<”Program Ends.”<<endl;

return 0;


Click to learn how the goto statement in Python differs from this.

In C++, how do you write to a file?

Use the ofstream class from the <fstream > header to write to a file in C++ [1]. This is an example of writing to a file:



int main()


Std::ofstream outputFile;




outputFile <<” This is the sample text to be written in the file.”;


std::cout<<” Successfully wrote the text into the file.”<<std::endl;




std::cout<<”File access failed.”<<std::endl;


return 0;


How much salary do you expect as a C or C++ programmer?

Bottom Line

You can handle a C and C++ interview with ease if you use the  C and C++ interview questions and answers listed above. In addition, exercise your soft skills and demonstrate your ability to collaborate with others and prospective employers. Apply for C and C++ training in Chennai at SLA Jobs if you’re a C and C++ programmer prepared to advance.