C and C++ Interview Question
1. What does
static variable mean?
Ans: Static is a
storage class in C. A variable of type static will persist through out the
program. This
persists the value of the variable through subsequent function calls.
2. What is a pointer?
Ans: A pointer is variable which stores the address of another variable or
areas of dynamically allocated memory.
3.
What is a structure?
Ans: A structure is a user defined data type. This stores the real data. For
example store a student information we can declare a structure type student.
4. What are
difference between structure and arrays?
Ans: Array is group of similar data type elements where as structure is
group of dissimilar data type elements.
5. In header
files whether functions are declared or defined?
Ans: The functions are only declared in the
header file.
6. What are
the differences between the malloc and calloc function.
Ans: The
major difference between malloc and calloc function is malloc allocates the
memory chunk and initializes to garbage value where as calloc function
allocates the memory in block wise and initializes to 0. Malloc function takes
one argument where as calloc takes two arguments.
7. What are
macros? What are the advantages and disadvantages?
Ans: A macro is a
fragment of code which has been given a name. Whenever the name is used in the
program, it is replaced by the contents of the macro. The ways in which macros are handled by preprocessors vary greatly from
compiler to compiler. Some problems are:
- Spaces between
parameters in the declaration are accepted in some preprocessors and
misinterpreted in others.
- Blanks after a slash in
some compilers are simply ignored but in others they produce errors.
8. Difference between pass by reference and
pass by value?
Ans: In call by value the actual
argument will not be affected by the change of the formal parameter. Where as
in Call by reference the actual argument will be affected by the formal
parameters.
9.
What is static Identifier?
Ans: In
C , a variable declared as static is local to a particular function. It is
initialized once and on leaving the function, the static variable retains the
value. Next time when the function is called again.
10. Where
are the auto variable stored?
Ans: The auto
variable will be stored in the temporary memory location and by default it
initializes to a variable to garbage.
11. Where does global, static, local, register variable free memory and C
Program instructions get stored?
Ans: Global,
local and static variables will be store in the temporary memory location where
as register variable will be stored in the cpu register if it has free memory
in CPU registers.
12.
Difference between arrays
and Linked List?
Ans: The
major difference between array and linked list is that array is a static data
structure and linked list is the dynamic data structure. In linked list we can
add elements dynamically and also remove but where as in arrays it is not
possible.
13. What are enumerations?
Ans: It is a data type similar to a structure.
Enumeration types provide the facility to specify the possible values of a
variable by meaningful symbolic means. This can help in making the program more
readable.
14. Describe about storage allocation and scope of global, extern, static,
local and register variables?
Ans: In C
Storage classes specifies about the scope, life time, storage location and
default value of a particular variable. Auto, extern and static variables are
stored in temporary memory location. Register variables are stored in CPU
registry. The scope of auto, static and register variable is with in the
function but where as extern variables scope is through out the program. Auto
and register variable by default initializes to garbage where as static and
extern variables are by default initializes to 0.
15. What are register variables? What are the advantages of
using register variables?
Ans: Register variables will be stored in the CPU
register memory so accessing the value from a register will be faster compare
to the normal temporary memory, So register variables are used as a loop
counter.
16. What is the use of typedef?
Ans: typedef
is a keyword in the C programming languages.
It is used to give a data type a new name. The intent is to make it easier
for programmers to comprehend source code.
17. Can we specify variable field width in a scanf() format
string? If possible how?
Ans: We can use the
variable field width in a scanf() function and the syntax to give the required
length accepting example scanf(“%5s”,str) where str is a character array.
18. Out of fgets() and gets() which functions safe to use and
why?
Ans: gets() function is very much
danger to use because it takes input directly from standard input, and it has
no protection against buffer overflow. A very easily exploited combination.
19. Difference between strdup() and strcpy()?
Ans: strcpy -
copy a string to a location YOU created (you create the location, make sure
that the source string will have enough room there and afterwards use strcpy to
copy)
strdup - copy a string to a location that will be created by the
function. The function will allocate space, make sure that your string will fit
there and copy the string. Will return a pointer to the created area.
20. What is a recursion?
Ans:
Recursion in computer
programming defines a function in terms call itself. The great advantage of recursion is that an infinite set of
possible statements executed by a finite computer program. It can be indirect
or direct.
21. Differentiate between a for loop and a while loop ? What are
it uses?
Ans:
The main difference between a WHILE loop and a FOR loop is that a FOR loop is
guaranteed to finish, but a WHILE loop is not. The FOR statement specifies the
exact number of times the loop executes, unless a statement causes the routine
to exit the loop. With while, it is possible to create an endless loop.
22. What are different storage classes in C.
There are four kind of storage classes are
there that are auto, register, static and extern.
23. Write down equivalent pointer expression for referring the
same element a[i][j][k][l]?
The equivalent for this pointer
variable
24. What is the difference between structure and union.
Ans: Both structure and union are user
defined data type only the difference between them is the only between
structure and union is the size of the union is equal to the size of the
largest member of the union where as size of the structure is the sum of the
size of al members of the structure. And one more thing is that we can use one
member of the union at a time.
25. What are the advantages of using Union?
Ans: Union is a data structure that stores
one of several types of data at a single location so memory can be minimized.
26. What are the advantages of using pointers in a program?
Ans: By using a pointer we can dynamically allocate
the memory so we can decide at runtime how many elements we need to take input
overcomes the limitation of Array by being a static memory allocation. And we
can access the other variables from a function.
27. What is the difference between String and Arrays?
Ans: A normal character array is like a array as
like integers which can store number of characters. But string is a character
array which ends with ‘\0’ null character.
28. What is a far pointer and where we use it?
Ans: Far pointers are the normalized
pointers of four bytes which are used to access the main memory of the computer
...it can access both the data segment and code segment thus by modifying the
offset u can modify refer two different addresses but refer to the same memory.
29.
How will you declare an array of three function pointer
where each function receives two ints and returns a float.
Ans: Declare an array of function pointers
float (*Func_Pointer[3])(int,int);
30.
What is NULL pointer? Whether
it is same as an uninitialized pointer ?
Ans: A null pointer has a reserved value,
often but not necessarily the value zero, indicating that it refers to no
object. Null pointers are used routinely, particularly in C and C++ where the
compile-time constant NULL is used, to represent conditions such as the lack of
a successor to the last element of a linked list. Null pointer
means it is not referring to any object but Uninitialized pointer can contain any value (just like any other
uninitialized variable), which we call garbage.
31.
What is NULL Macro? What is the
difference between a NULL pointer and a NULL Macro?
Ans: NULL can make it more clear in the code that you are expecting and
dealing
with pointers, but NULL is not part of the language proper, but part of the
library (meaning that you must include a library before it is defined).
with pointers, but NULL is not part of the language proper, but part of the
library (meaning that you must include a library before it is defined).
In a case Null Macro 0 requires no support library (i.e. it is part of the language proper), but
it can lead some loss of code clarity when dealing w/ pointers (specifically
integer pointers, is the intent to compare the pointer or the destination of
the pointer ?).
32.
What does the error “Null Pointer Assignment” mean and what causes
this error?
Ans: A
NULL pointer assignment is a runtime error
It occurs due to various reasons one is that your program has tried to access an illegal memory location.
It occurs due to various reasons one is that your program has tried to access an illegal memory location.
33.
What is near, far and huge
pointer? How many bytes are occupied by them?
Ans: Huge pointers are fully recognized and evaluated for
their entire width. Far pointers only allow normal operations to be done to
their offset amount and not the segment. Near pointers have a size of 2 bytes?
They only store the offset of the address the pointer is referencing. A near
pointer can be incremented and decremented using arithmetic operators (+, -,
++, and --) through the entire address range. Any attempt to increment a near
pointer that has a value of 64K (0xffff) will result in a value of 0.
34.
How would you obtain segment
and offset address from a far address of a memory location?
Ans:
35.
Are the expressions arr and
*arr same for an array of integers?
Ans: When ever we say arr that means the address
of the arr[0] th location that is base index address of the array where as *
arr means the value which is stored in arr[0].
36.
Does mentioning the array name
gives the base address in all the contexts?
Ans:
37.
What are the similarities
between structure, union and enumeration?
Ans: The major similarities that they all are
user defined data types to store real data. In structure and Union their
members can be objects of any type, including other structures and unions or
arrays. A member can also consist of a bit field. The only operators valid for
use with entire structures and unions are the simple assignment (=) and
sizeof operators. A structure or a union
can be passed by value to functions and returned by value by functions.
38.
Can structure contain a Pointer
to itself?
Ans: A structure can contain a Pointer to itself.
It is called self – referential pointer which can store an address of another
structure object by which we can create a list.
39.
How can we check whether the
contents of two structure variables are same or not?
Ans: By
using memcmp() function we can compare two structure objects contents same or
not.
40.
How are structure passing and
returning implemented by the compiler?
Ans:
41. How can we read/write structures from/to data
files?
Ans: To write or read structure object to a file
we can use fread() and fwrite() function. The Syntax of the fread() function is
fread(Address of Buffer, Number of Object, object size, File Pointer) and
fwrite(Address of Buffer, Number of Object, Object Size, File Pointer).
41.
What is the difference between an enumeration and
set of Pre-Processor # defines?
Ans: a macro just replaces the
code assigned to it. For example if a macro "PI" is defined with a
value 3.14. Compiler just replaces PI with 3.14 where ever it finds PI in the
program. Enum-declared constants are to be preferred because they obey
scoping rules (e.g. they can be encapsulated within
a class or namespace).
a class or namespace).
42.
What do the
‘c ‘ and ‘v’ in argc and argv stand for?
Ans: Here c stands for the counter and v stands for the
value.
43.
Are the variables argc and argv are local to main?
Ans: Yes,These
both variables are local to the main only.
44.
What is the maximum combined length of command line
arguments including the space between adjacent arguments?
Ans: There
is 126 character limit is there in passing as command line argument.
45.
If we want that any wild card characters in the
command line arguments should be appropriately expanded, are we required to
make any special provisions? If yes which?
Ans: If we have any special
wild characters in the command line argument then precede with a ‘\’ character
to appropriately expanding. You can quote only some parts of the wildcard to
protect only those parts from expansion; the unquoted parts will still be
expanded. This allows to use wildcards with embedded whitespace and expand file
names with special characters which need to be quoted, like in
c:/Prog*' 'F* (which should expand into c:/Program Files) and
*.c"'"v (which should expand into all files with the *.c'v
extension).
46.
Does there exist any way to make the command line
arguments available to other functions without passing them as arguments to the
function?
Ans:
47.
What are bit fields ? What is the use of bit fields
in a structure declaration?
Ans: Bit fields provide greater control over the
structure's storage allocation and allow tighter packing of information in
memory. By using bit fields, data can be densely packed into storage.
48.
To which numbering system can the binary number
1101100100111100 be easily converted to?
Ans: To convert to decimal numbering system will
be easy.
49.
Which bit wise operator is suitable for checking
whether a particular bit is on or off?
Ans: Bitwise operator not(!) is used for
checking whether the bit is on or off.
50.
Which bit wise operator is suitable for turning off
a particular bit in a number?
Ans: Bit wise Not operator is used for turning
off to a particular bit in a number.
51.
Which bit wise operator is suitable for putting on a particular bit in a number?
Ans:
52.
57. Write a Program to compare two
strings without using the strcmp function.
#include<stdio.h>
#include<conio.h>
int StringCompare(char [],char []);
void main()
{
char
str1[10],str2[10];
printf("Enter
the first String");
scanf("%s",str1);
printf("Enter
the second String");
scanf("%s",str2);
if(StringCompare(str1,str2)==0)
{
printf("Strings
are equal");
}
else
{
printf("Strings
are not equal");
}
}
int StringCompare(char str1[10],char
str2[10])
{
int
i,j,flag=0;
for(i=0;str1[i]!='\0';i++);
for(j=0;str2[j]!='\0';j++);
if(i==j)
{
for(i=0;str1[i]!='\0';i++)
{
if(str1[i]!=str2[i])
{
flag=1;
break;
}
}
}
else
{
flag=1;
}
return
flag;
}
58. Write a Program to concatenate
two strings.
#include<stdio.h>
#include<conio.h>
void concat(char [],char []);
void main()
{
char
str1[20],str2[10];
printf("Enter
first String");
scanf("%s",str1);
printf("Enter
second String");
scanf("%s",str2);
concat(str1,str2);
printf("The
concatenated String:%s",str1);
}
void concat(char ch1[20],char ch2[10])
{
int
i,j;
for(i=0;ch1[i]!='\0';i++);
for(j=0;ch2[j]!='\0';j++,i++) {
ch1[i]=ch2[j];
}
ch1[i]='\0';
}
59. Write a program to interchange
2 variables without using the third one.
#include<stdio.h>
#include<conio.h>
void main()
{
int
i,j;
printf("Enter
value for i");
scanf("%d",&i);
printf("Enter
the value for j");
scanf("%d",&j);
i=i+j;
j=i-j;
i=i-j;
printf("
The value of I:%d and J:%d",i,j);
}
60. Write a Programs for string
Reversal. The same for Palindrome check.
#include<stdio.h>
#include<conio.h>
void StringReverse(char [],char []);
int palindrome(char [],char []);
void main()
{
char
ch1[10],ch2[10];
printf("Enter
a String");
scanf("%s",ch2);
StringReverse(ch1,ch2);
printf("The
reversed String is :%s\n",ch1);
if(palindrome(ch1,ch2)==0)
{
printf("The
String is a Palindrome String\n");
}
else
{
printf("The
String is a not a Palindrome String\n");
}
}
void StringReverse(char ch1[],char
ch2[])
{
int
i,j;
for(i=0;ch2[i]!='\0';i++);
i--;
for(j=0;i>=0;i--,j++)
{
ch1[j]=ch2[i];
}
ch1[j]='\0';
}
int palindrome(char ch1[10],char
ch2[10])
{
int
i,flag=0;
for(i=0;ch1[i]!='\0';i++)
{
if(ch1[i]!=ch2[i])
{
flag=1;
break;
}
}
return
flag;
}
61. Write a Program to find the
factorial of a Number.
#include<stdio.h>
#include<conio.h>
void main()
{
int
fact=1,i,j;
printf("Enter
the value for Factorial");
scanf("%d",&i);
for(j=1;j<=i;j++)
{
fact=fact*j;
}
printf("The
factorial Number is:%d",fact);
}
62. Write a Program to generate the
Fibonacci series.
#include<stdio.h>
#include<conio.h>
void main()
{
int
i,j,range;
i=1;
j=0;
printf("Enter
the range for Fibonacci");
scanf("%d",&range);
printf("%d\n",j);
while(i<range)
{
i=i+j;
j=i-j;
printf("%d\n",j);
}
}
63. Write a Program which employs
Recursion?
64. Write a Program which uses command
line arguments.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
/* Write a Program to Read a File and
display the content */
int main(int argc,char *argv[])
{
FILE
*fp;
char
ch;
fp=fopen(argv[1],"r");
if(fp==NULL) {
printf("File
Does not exist");
exit(0);
}
while((ch=fgetc(fp))!=EOF)
{
putc(ch,stdout);
}
}
65. Write a Program which uses
functions like strcmp(),strcpy() etc.
#include<stdio.h>
#include<conio.h>
void main(){
char ch1[10],ch2[10];
printf("Enter
the first String");
scanf("%s",ch1);
printf("Enter
the second String");
scanf("%s",ch2);
if(strcmp(ch1,ch2)==0)
{
printf("Strings
are equal");
}
else
{
printf("Strings
are not equal");
}
}
#include<stdio.h>
#include<conio.h>
#include<string.h>
/* Program displaying copying a String */
void main()
{
char ch1[10],ch2[10];
printf("Enter
a String");
scanf("%s",ch2);
strcpy(ch1,ch2);
printf("The
Copied String is :%s",ch1);
}
66. What are the advantages of using typedef in a Program?
Ans: The typedef keyword allows the programmer to
create new names for types such as int ,char or to a user defined data type
like structure.
Syntax for creating Typedef
Typedef
Data_Type New_Name;
Ex: Lets struct student{ int id,age;}
Typedef
struct student stud; //struct student now can be represent as stud.
67. How would you dynamically
allocate a one dimensional and two dimensional array of integers?
Ans: To allocate the one dimensional array
dynamically we have to use a simple malloc function like we can say int *p=(int
*) malloc(i* sizeof(int)) . So here I number of integers can be stored by the
pointer. But when we are going to dynamically allocate the double dimensional
array then you
must first allocate memory sufficient to hold all the elements of the array
(the data), then allocate memory for pointers to each row of the array. For
arrays of more than two dimensions it gets more complicated.
68. How can you increase the size
of a dynamically allocated array?
Ans: By using realloc() function we can
allocate memory again to a dynamic allocated array.
69. How can you increase the size
of a statically allocated array?
Ans;
70. When reallocating memory if any
other pointers point into the same piece of memory do you have to readjust
these other pointers or do they get readjusted automatically?
Ans:
71. Which function should be used to free the memory allocated by calloc()?
Ans: By using the free() method we can free
the memory which allocated by calloc() function.
72. How much maximum can you
allocate in a single call to malloc()?
Ans:
73. Can you dynamically allocate
arrays in expanded memory?
Ans:
74. What is Object file? How can you access object file?
Ans:
75. Which header file should you
include if you are to develop a function which can accept variable number of
arguments?
Ans: We can use <stdarg.h> header
file for including the variable number of arguments in the c programming.
76. Can you write a function similar
to printf()?
Ans:
77. How can a called function
determine the number of arguments that have been passed to it?
Ans: To determine number of arguments passed by a
variable arguments manually we have to figure it out . There is no function
have been defined where we can ask compiler for how many values have been
passed to this function.
78. Can there be at least some
solution to determine the number of arguments passed to a variable argument
list function?
Ans: To determine number of arguments
passed by a variable arguments manually we have to figure it out . There is no
function have been defined where we can ask compiler for how many values have
been passed to this function.
79. How do you declare the following :
i.
An array of three Pointers to chars.
Ans:
char *arr[3];
ii.
An array of three char pointers.
Ans:
char * arr[3];
iii.
A Pointer to array of three chars.
Ans:
char *p;
iv.
A Pointer to function which receives an int pointer and returns a float
pointer.
Ans:
float *(*fp)(int *)
v.
A Pointer to a function which receives nothing and returns nothing.
Ans:
void (*fp)(void)
80. What do the function atoi()
,itoa() and gcvt() do?
AnsLi int atoi(const
char *) function converts a character string into specified integer type.
ii void itoa(int input, char *buffer, int radix) function
constructs a string representation of an integer
iii char *gcvt(double value, int
ndigit, char *buf) function converts a floating-point number to a string.
81.Does there exist any other
function which can be used to convert an integer or a float to a string?
82.How would you use qsort()
function to sort an array of structures?
83. How would you use qsort()
function to sort the name stored in an array of pointers to string.
84. How would you use bsearch()
function to search a name stored in array of pointers to string.
85. How would you use the functions
sin(),pow() and sqrt()?
Ans: i. double sin(double arg) The
function returns the sine of arg, where arg is given in radians.
ii. double pow(double base,double exp) The function returns base raised to the exp
power. There's a domain error if base is zero and exp is less
than or equal to zero.
iii. double sqrt(double num) The function returns the square root of num.
If num is negative, a domain error occurs.
86. How would you use the
function memcpy(),memset(),memmove() ?
i. The function memcpy() copies count
characters from the array from to the array to. memcpy() returns to.
The behavior of memcpy() is undefined if to and from overlap.
void *memcpy( void *to, const void *from, size_t count );
ii. The function memset() copies ch into
the first count characters of buffer, and returns buffer.
memset() is useful for intializing a section of memory to some value. For
example, this command:
void *memset( void *buffer, int ch, size_t count );
iii. The memmove() function is identical to memcpy(),
except that it works even if to and from overlap.
void *memmove( void *to, const void *from, size_t
count );
87. How would you use the functions
fseek(),fread(), fwrite() and ftell()?
i. int
fseek( FILE *stream, long offset, int origin );The function fseek() sets the file position data for the given stream. The origin value should have one of the following values (defined in stdio.h):
|
Name
|
Explanation
|
|
SEEK_SET
|
Seek from the start of the file
|
|
SEEK_CUR
|
Seek from the current location
|
|
SEEK_END
|
Seek from the end of the file
|
fseek()
returns zero upon success, non-zero on failure. You can use fseek() to move
beyond a file, but not before the beginning. Using fseek() clears the EOF flag
associated with that stream.
ii. int fread( void *buffer, size_t size, size_t num, FILE *stream );The function fread() reads num number of objects (where each object is size bytes) and places them into the array pointed to by buffer. The data comes from the given input stream. The return value of the function is the number of things read...use feof() or ferror() to figure out if an error occurs.
iii. int fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
The
fwrite() function writes, from the array buffer, count objects of
size size to stream. The return value is the number of objects
written.
iv. long ftell( FILE *stream );
The ftell() function returns the
current file position for stream, or -1 if an error occurs.
88. How would you obtain the
current time and difference between two times?
Ans: To print a current time we can use the following code.
#include<time.h>
#include<stdio.h>
main()
{
time_t tt;
struct tm *tod;
time(&tt);
tod=localtime(&tt);
printf("%d:%d:%d",tod->tm_hour,tod->tm_min,tod->tm_sec);
exit(0);
}
89. How would you use the functions
randomize () and random ()?
Ans: int random (int n);
Which generates a random
number in the range of 0 to n-1? For example;
y = random (100);
Y will be in the range
of 0 though 99
90. How would you implement a substr() function that extracts a sub string
from a given string?
Ans : basic_string substr( size_type index, size_type num = npos
);
The substr() function returns a substring of the current string,
starting at index, and num characters long. If npos is omitted, it will default
to string::npos, and the substr() function will simply return the
remainder of the string starting at index.
92. What is the difference between
the functions memmove() and memcpy()?
Ans: void *memcpy( void *to, const void
*from, size_t count);
The function memcpy() copies count
characters from the array from to the array to. memcpy() returns to.
The behavior of memcpy() is undefined if to and from overlap.
void *memmove( void *to, const void *from, size_t count );
The memmove() function is identical to memcpy(), except that it works even if to
and from overlap.
93. How do you print a string on
the printer?
94. Can you use the function
fprintf() to display the output on the screen?
Ans: Yes we can use fprintf() function for printing to the output
screen
Let s example I want
to write a String to output screen we can write
fprintf (stdout,”%s”,ch1);//where
ch1 is a character String
95. What is a linked list and why do we use it when we have arrays?
Ans: A linked list is one of the fundamental data structures. It consists of a sequence of nodes, each containing arbitrary data fields and one or two references ("links") pointing to the next and/or previous nodes.
Linked list used in cases where you don’t know the memory required to store a
data structure and need to allocate is dynamically on demand.
96. How do you detect a loop in
linked list?
Ans:
97. What is the difference between
main() in C and C++.
Ans: In C++, you are free to leave off the statement 'return 0;'
at the end of main; it will be provided automatically. But in C we need to
write the ‘return 0’ mandatorily.
98. What will be printed out when the following code is executed?
main()
{
printf(“%x”,-1>>4);
}
The output of the above program will be : ffffffff






0 comments:
Post a Comment