1. What is C
language?
The C programming language is a standardized
programming language developed in the early 1970s by Ken Thompson and Dennis
Ritchie for use on the UNIX operating system. It has since spread to many other
operating systems, and is one of the most widely used programming languages. C
is prized for its efficiency, and is the most popular programming language for
writing system software, though it is also used for writing applications.
2. What
does static variable mean?
There are 3 main uses for the static.
1. If you declare within a function: It
retains the value between function calls
2. If it is declared for a function name: By
default function is extern..so it will be visible from other files if the
function declaration is as static..it is invisible for the outer files
3. Static for global variables: By default we
can use the global variables from outside files If it is static global..that
variable is limited to with in the file.
#include <stdio.h>
int t = 10;
main(){
int x = 0;
void funct1();
funct1();
printf("After first call \n");
funct1();
printf("After second call \n");
funct1();
printf("After third call \n");
}
void funct1()
{
static int y = 0;
int z = 10;
printf("value of y %d z %d",y,z);
y=y+10;
}
int t = 10;
main(){
int x = 0;
void funct1();
funct1();
printf("After first call \n");
funct1();
printf("After second call \n");
funct1();
printf("After third call \n");
}
void funct1()
{
static int y = 0;
int z = 10;
printf("value of y %d z %d",y,z);
y=y+10;
}
value of y 0 z 10 After first call
value of y 10 z 10 After second call
value of y 20 z 10 After third call
value of y 10 z 10 After second call
value of y 20 z 10 After third call
3. What are the
different storage classes in C?
C has three types of storage: automatic,
static and allocated. Variable having block scope and without static
specifier have automatic storage duration.
Variables with block scope, and with static
specifier have static scope. Global variables (i.e, file scope) with or without
the the static specifier also have static scope. Memory obtained from
calls to malloc(), alloc() or realloc() belongs to allocated storage class.
4. What
is hashing?
To hash means to grind up, and that’s
essentially what hashing is all about. The heart of a hashing algorithm is a hash
function that takes your nice, neat data and grinds it into some random-looking
integer.
The idea behind hashing is that some data
either has no inherent ordering (such as images) or is expensive to compare
(such as images). If the data has no inherent ordering, you can’t perform
comparison searches.
5. Can static
variables be declared in a header file?
You can’t declare a static variable without
defining it as well (this is because the storage class modifiers static and
extern are mutually exclusive). A static variable can be defined in a header
file, but this would cause each source file that included the header file to
have its own private copy of the variable, which is probably not what was
intended.
6. Can a variable be
both constant and volatile?
Yes. The const modifier means that this code
cannot change the value of the variable, but that does not mean that the value
cannot be changed by means outside this code.
The function itself did not change the value
of the timer, so it was declared const. However, the value was changed by
hardware on the computer, so it was declared volatile. If a variable is both
const and volatile, the two modifiers can appear in either order.
7. Can include
files be nested?
Yes. Include files can be nested any number
of times. As long as you use precautionary measures, you can avoid including
the same file twice. In the past, nesting header files was seen as bad
programming practice, because it complicates the dependency tracking function
of the MAKE program and thus slows down compilation. Many of today’s popular
compilers make up for this difficulty by implementing a concept called
precompiled headers, in which all headers and associated dependencies are
stored in a precompiled state.
8. What is
a null pointer?
There are times when it’s necessary to have a
pointer that doesn’t point to anything. The macro NULL, defined in , has a
value that’s guaranteed to be different from any valid pointer. NULL is a
literal zero, possibly cast to void* or char*.
Some people, notably C++ programmers, prefer
to use 0 rather than NULL.
The null pointer is used in three ways:
1) To stop indirection in a recursive data structure.
2) As an error value.
3) As a sentinel value.
The null pointer is used in three ways:
1) To stop indirection in a recursive data structure.
2) As an error value.
3) As a sentinel value.
9. What is the output
of printf("%d") ?
When we write printf("%d",x); this
means compiler will print the value of x. But as here, there is nothing after
%d so compiler will show in output window garbage value.
10. What is the
difference between calloc() and malloc() ?
calloc(...) allocates a block of memory for
an array of elements of a certain size. By default the block is initialized to
0. The total number of memory allocated will be (number_of_elements * size).
malloc(...) takes in only a single argument
which is the memory required in bytes. malloc(...) allocated bytes of memory
and not blocks of memory like calloc(...).
malloc(...) allocates memory blocks and
returns a void pointer to the allocated space, or NULL if there is insufficient
memory available.
calloc(...) allocates an array in memory with
elements initialized to 0 and returns a pointer to the allocated space.
calloc(...) calls malloc(...) in order to use the C++ _set_new_mode function to
set the new handler mode.
No comments:
Post a Comment