Exarn-!. FY-Bse
Sub-) Dmakercet NE Progeracrrm oe
Exar Desté-* uf 5I!F@x Hours) [Total Marks: 75
N.B.: (1) All questions are compulsory. @P. code-0 395
(2) Make suitable assumptions wherever necessary and state the assumptions made,
(3) Answers to the same question must be written together.
(4) Numbers to the right indicate marks.
(5) Draw neat labeled diagrams wherever necessary.
(6) Use of Non-programmable calculators is allowed.
1.
‘Attempt any three of the following:
15
‘What is the role of a compiler and interpreter in programming?
A program that is written in a high-level language must, however, be translated into
machine language before it can be executed, This is known as compilation or
interpretation, depending on how itis carried out,
(Compilers translate the entire program into machine language before executing any of the
instructions. Interpreters, on the other hand, proceed through a program by translating and
then executing single instructions or small groups of instructions.) In either case, the
translation is carried out automatically within the computer. In fact, inexperienced
programmers may not even be aware that this process is taking place, since they typically
‘see only their original high-level program, the input data, and the calculated results. Most
implementations of C operate as compilers. A compiler or interpreter is itself a computer
Program. It accepts a program written in a high-level language (e.g., C) as input, and
generates a corresponding machine-language program as output. The original high-level
program is called the source program, and the resulting machine-language program is called
the object program. Every computer must have its own compiler or interpreter for a
particular high-level language.
b.
Draw a flowchart to generate numbers from 1 to 10.
What are the various datatypes in C ? Explain them.
C supports several different types of data, each of which may be represented differently
within the computer's
memory. The basic data types are listed below. Typical memory requirements are also
given. (The memory
requirements for each data type will determine the permissible range of values for that
data type. Note that the
memory requirements for each data type may vary from one C compiler to another.)
Built in
int integer quantity 2 bytes or one word (varies fromone compiler to another)
char single character 1 byte
float floating-point number (.e., a number containing 1 word (4 bytes) a decimal point
andor an exponent)
double double-precision floating-point number (i.e., more 2 words (8 bytes)significant
figures, and an exponent which maybe larger in magnitude)
Derived types
They includ(c) Structure types,
(d) Union types and
(e) Function types.
The array types and structure types are referred collectively as the aggregate types. The
type of a function specifies the type of the function's return value.
d.| What are the rule for all numeric constants in C.
Integer and floating-point constants represent numbers. They are often referred to
collectively as
numeric-type constants.
The following rules apply to all numeric-type constants.
1. Commas and blank spaces cannot be included within the constant.
2. The constant can be preceded by a minus (-) sign if desired. (Actually the minus sign is an
operator that changes the sign of a positive constant, though it can be thought of as a part
of the constant itself.)
3. The value of constant cannot exceed specified minimum and maximum bounds. For
each type of constant, these bounds will vary from one C compiler to another.
What is a variable? How are they declared and used in expressions in C?
A variable is an identifier that Is used to represent some specified type of information
within a designated portion of the program. in its simplest form, a variable is an identifier
that is used to represent a single data item; i.e., a numerical quantity or a character
constant. The data item must be assigned to the variable at some point in the program. The
data item can then be accessed later in the program simply by referring to the variable
name.
Agiven variable can be assigned different data items at various places within the program.
‘Thus, the information represented by the variable can change during the execution of the
program. However, the data type associated with the variable cannot change.
A declaration associates a group of variables with a specific data type. All variables must be
declared before they can appear in executable statements. A declaration consists of a data
type, followed by one or more variable names, ending with a semicolon.
inta,b,c;
float root! , root2;
char flag, text [80] ;
¥. | Determine if the following identifiers are valid inC
i) record — valid
Hl) Stax —~ invalid
123-45-6789 — invalid
iv) address and name — invalid
v)__file_3-— valid
2.| Attempt any three of the following:
a.| Write a program in Cto finds the area and circumference ofa circle.
b.| Explain the incrementer and decrementer operator in C with example.
There are two other commonly used unary operators: The increment operator, ++, and the
decrement toperator, ~. The increment operator causes its operand to be increased by 1,Example Suppose that iis an integer variable that has been assigned a value of 5. The
expression +#,which is equivalent to writing i= i+ 1, causes the value of i to be increased
to 6. Similarly, the expression --1, which is equivalent to i =i- 1, causes the (original) value
of i to be decreased to 4.
The increment and decrement operators can each be utilized two different ways,
depending on whether the operator is written before or after the operand. If the operator
precedes the operand (e.g., ++i), then the operand will be altered in value before it is
utilized for its intended purpose within the program. If, however, the operator follows the
operand (e.g., i+), then the value of the operand will be altered after it is utilized.
¢.| Explain the following functions in C
i) sin() — Return the sine of double
i) exp() -- Raise e to the power d (e = 2.7182818 * is the base of the natural
(Naperian)system of logarithms).
i) pow() -——- Return a raised to the b power. (a°)
iil) tolower( c) —- Convert letter to lowercase.
iv) putchar(c) —-~ Send a character to the standard output device like display ¢
contents to screen
d.| Write a program in C to find fourth roots of a number entered by the user.
| | Finciade emathihs =
#iinclude
int main(void)
:
double x= 0.0, result;
|
| | seanteaar, 6;
result = sqrt(sqrt(x));
printi("The square root of %lFis %Ifn®, x, result);
| | return 0:
|
|
z
Describe the syntax of the scanf{) statement in C.
Input data can be entered into the computer from a standard input device by means of the
C library function scanf. This function can be used to enter any combination of numerical
values, single characters and strings. The function returns the number of data items that
have been entered successfully.In general terms, the scanf function is written as
scanf{controi string, argl, arg2, ..., argn)
where control string refers to a string containing certain required formatting information,
and argl,arg2, .. . argn are arguments that represent the individual input data items.
The control strine consists of individual groups of characters. ‘one character croup forconversion character which indicates the type of the corresponding data item.Within the
control string, multiple character groups can be contiguous, or they can be separated by
whitespace characters (ie., blank spaces, tabs or newline characters). If whitespace
characters are used to separate multiple character groups in the control string, then all
consecutive whitespace characters in the input data will be read but ignored, The use of
blank spaces as character-group separators is very common
€ data item is a single character
d data item is a decimal integer
e data item is a floating-point value
f data item is a floating-point value
& data item is a floating-point value
h data item is a short integer
idata item is a decimal, hexadecimal or octal integer
0 data item is an octal integer
S data item is a string followed by a whitespace character (the null character \ 0 will
automatically be added at the end)
U data item is an unsigned decimal integer
X data item is a hexadecimal integer
[..] data item isa string which may include whitespace characters
The arguments are written as variables or arrays, whose types match the corresponding
character groupsin the control string. Each variable name must be preceded by an
ampersand (&).
Example
char item(201;
intpartno;
floatcost;
"9s She %6f",item, Bpartno, &cost);
Explain :?, += and %= in and expression in C.
:? THE CONDITIONALOPERATOR
Simple conditional operations can be carried out with the conditional operator (7 :). An
expression that makes use of the conditional operator is called a conditional expression.
Such an expression can be written in place of the more traditional if -else statement
Aconditional expression is written in the form
expression 1 ? expression 2 : expression 3
When evaluating a conditional expression, expression 1 is evaluated first. If expression 1 is
true (1e,, ifits value is nonzero), then expression 2 is evaluated and this becomes the value
of the conditional expression. However, if expression 1 is false (i.e., i its value is zero), then
expression 3is evaluated and this becomes the value of the conditional exoression. Note
‘that only one of the embedded expressions (either expression 2 or expression 3) is
evaluated when determining the value of a conditional expression.
EXAMPLE
In the conditional expression shown below, assume that iis an integer variable.
0)?0:100
‘The expression (i <0) is evaluated first. If itis true
entire conditional
expression takes on the value 0. Otherwise (if the value of iis not less than 0),the entire
Pen -o~ oper “eerie eatin nt eieeeinn faerie ate My
if the value of iis less than 0), the+= The assignment expression
expression 1 += expression 2
Is equivalent to
expression 1 = expression 1 + expression 2
9%= The assignment expression
expression 1 %= expression 2
is equivalent to
expression 1 = expression 1 % expression 2
3.| Attempt any three of the following: 15 |
a.) Describe the syntax of the for statement in C.
The f or statement is the third and perhaps the most commonly used looping statement in
C. This statement
includes an expression that specifies an initial value for an index, another expression that
determines whether
or not the loop is continued, and a third expression that allows the index to be modified at
the end of each
pass.
The general form of the for statement is
for ( expression 1; expression 2; expression 3) statement
where expression 1 is used to initialize some parameter (called an index) that controls the
looping action, expression 2 represents a condition that must be true for the loop to
continue execution, and expression 3is used to alter the value of the parameter initially
assigned by expression 1. Typically, expression 1 is an assignment expression, expression 2
is a logical expression and expression 3 is a unary expression or an assignment expression.
When the for statement is executed, expression 2is evaluated and tested at the beginning
of each pass through the loop, and expression 3 is evaluated at the end of each pass.
Thus, the for statement is
equivalent to
expression 1;
while (expression 2) {
statement
expression 3;
t
The looping action will continue as long as the value of expression 2 is not zero, that is, as
Jong as the logical condition represented by expression 2s true.
The f or statement, like the while and the do - while statements, can be used to carry out
looping actions where the number of passes through the loop Is not known in advance.
Because of the features that are built into the f or statement, however, itis particularly
well suited for loops in which the number of passes is known in advance. As a rough rule of
thumb, while loops are generally used when the number of passes is not known in advance,
and fo r loops are generally used when the number of passes is known in advance
b.| Write a program in C to generate the Fibonacci series 0, 1, 1, 2, 3, 4, nterms using a
while loop.
#includesstdio.h>
int main({
int kr;
long int i=01,printi("Enter the number range:");
scanf("9%d", 8);
printf("FIBONACCI SERIES:
printf("%6ld 961d",i,j);
printf(" %ld",));
}
return 0;
}
.| What is the conditional statement in C? Describe its various syntax.
The general form of an if statement which includes the else clause is
if (expression) statement 1 else statement 2
If the expression has a nonzero value (i.e., if expression is true), then statement 1 will be
executed, Otherwise (Le., if expression is false), statement 2 will be executed.
Itis possible to nest (.e., embed) if- else statements, one within another. There are several
different forms that nested if - else statements can take. The most general form of two-
layer nesting is,
ifelifezst
else s2
else if €3 s3
else s4
where e |, e2 and e3 represent logical expressions and s 1, s2,s3and s4 represent
statements. Now, one complete if - else statement will be executed if el is nonzero (true),
and another complete if - else statement will be executed if e 1 is zero (false). Itis, of
course, possible that s1, s2,s3and s4 will contain other if - else statements. We would then
have multilayer nesting.
‘the general form of four
nested if - else statements could be written as
ifels!
else if 2 52
else if e3 s3
else if e4 s4
else sS
When a logical expression is encountered whose value is nonzero (true), the corresponding
statement will be executed and the remainder of the nested if- else statements will be
bypassed. Thus, control will be transferred out of the entire nest once a true condition is
encountered. The final else clause will apply if none of the expressions is true. It can be
used to provide a default condition or an error message.
Ge aks ee el anaes Thane diecues, dicieeeetask. Every C program consists of one or more functions One of these functions must be
called main,
Execution of the program will always begin by carrying out the instructions in main,
Additional functions will be subordinate to main, and perhaps to one another.
Ifa program contains multiple functions, their definitions may appear in any order, though
they must be independent of one another. That is, one function definition cannot be
embedded within another. A function will carry out its intended action whenever it is
accessed (i.e., whenever the function is "called") from some other portion of the program.
The same function can be accessed from several different places within a program. Once
the function has carried out its intended action, control will be returned to the point from
which the function was accessed.
Generally, a function will process information that is passed to it from the calling portion
of the program, and return a single value. Information is passed to the function via special
identifiers called arguments (also called parameters), and returned via the return
statement
In general terms, a function declaration can be written as Function prototypes are usually
written at the beginning of a program, ahead of any programmer-defined
functions (including main). The general form of a function prototype is
data-type name{ type 1 arg 1, type 2 arg 2,...., typenargn);
where data- type represents the data type of the item that is returned by the function,
name represents the
function name, and type 1, type 2, . . ., type n represent the data types of the arguments
arg 1, arg 2,...., arg n. Notice that a function prototype resembles the first line of a
function definition (though a function prototype ends with a semicolon).
The names of the arguments within the function prototype need not be declared elsewhere
in the program,since these are "dummy" argument names that are recognized only within
the prototype. In fact, the argumentnames can be omitted (though it is not a good idea to
do so);however, the argument data types are essential
A function definition has two principal components: the first line (including the argument
declarations), and the body of the function.
The first line of a function definition contains the type specification of the value returned by
the function, followed by the function name, and (optionally) a set of arguments, separated
by commas and enclosed in parentheses. Each argument is preceded by its associated type
declaration. An empty pair of parentheses must follow the function name if the function
definition does not include any arguments.
In general terms, the first line can be written as
data- type name( type 1 arg 7, type 2 arg 2, ..., type n arg n)
where data - type represents the data type of the item that is returned by the function,
name represents the function name, and type I,type 2, ..., type n represent the data types
of the arguments arg, arg 2,..., arg n.
The arguments are called formal arguments, because they represent the names of data
items that are transferred into the function from the calling portion of the program. They
are also known as parameters or formal parameters. The remainder of the function
definition is a compound statement that defines the action to be taken by the function. This
compound statement is sometimes referred to as the boafy of the function. Like any other
compound statement, this statement can contain expression statements, other compound
statements, control statements, and so on. It should include one or more return
statements, in order to return a value to the
calling portion of the program.numbers from 1 to 10.
#include
+#include
int fact(int);
void main()
A
int ix;
ph)
printf("\nfactorial of %d is %d ",j,x);
| getch();
}
int fact(int z)
{int fac=1;
forljzl=0;2--)
{fact=z;
}
return(fac);
}
Explain with example the various ways of calling a function in C.
Call by Value
If data is passed by value, the data is copied from the variable used in for example
main() to a variable used by the function. So if the data passed (that is stored in the
function variable) is modified inside the function, the value is only changed in the
variable used inside the function.
#include
void call_by_value(int x) {
printf("Inside call_by_value x = %d before adding 10.\n", x);
0;
printf("Inside call_by_value x = %d after adding 10.\n", x);
}
int main() {
int =10;
printf("a = %d before function call_by_value.\n", a);
call_by_value(a);
printf("a = %d after function call_by_value,\n", a);
return 0;
iH
The output of this call by value code example will look like this:Inside call_by_value x = 20 after adding 10.
a= 10 after function call_by_value.
In the main() we create a integer that has the value of 10. We print some information
at every stage, beginning by printing our variable a. Then function call_by_value is called
and we input the variable a. This variable (a) is then copied to the function variable x. In
the function we add 10 to x (and also call some print statements). Then when the next
| _ statements called in main() the value of variable ais printed. We can see that the value
of variable a isn’t changed by the call of the function call_by_value().
Call by Reference
In this method the reference variables of the actual arguments are created as formal
arguments. Reference variables are aliases of the original variables and refer to the same
memory locations as the original variables do. Since the formal arguments are aliases of the
actual arguments, if we do any changes in the formal arguments they will affect the actual
arguments.
#include
void call_by_value(int &x) {
printf("Inside call_by_value x = %d before adding 10.\n", x);
x42 10;
| printf("Inside call_by_value x = %d after adding 10.\n", x);
int main() {
int a=:
0;
printf("a = %d before function call_by_value.\n", a);
call_by_value(a);
printf("a = %d after function call_by_value,\n", a);
return 0;
Call by address
In this method the addresses of the actual arguments are copied to the formal arguments.
Since the formal arguments point to the actual arguments as they contain addresses of the
actual arguments, if we do any changes in the formal arguments they will affect the actual
arguments. The formal arguments will be pointers because we have to store addresses in
them
#include
void call_by_value(int *x) {
printf("Inside call_by_value x
*\ 42 10;
printf("Inside call_by_value x = %d after adding 10.\n", *x);
sd before adding 10.\n", *x);printf("a = %d before function call_by_value.\n", a);
call_by_value(&a);
printf("a = %d after function call_by_value.\n", a);
return 0;
4,| Attempt any three of the following:
2 | What are storage classes in C ? What are thelr scope in C?
Storage class refers to the permanence of a variable, and its scope within the program, i.e,
the portion of the program over which the variable is recognized.
There are four different storage-class specifications in C: automatic, external, static and
register. They are identified by the keywords auto, extern, statie and register, respectively.
The storage class associated with a variable can sometimes be established simply by the
location of the variable declaration within the program. In other situations, however, the
keyword that specifies a particular storage class must be placed at the beginning of the
variable dectaration
Automatic variables are always declared within a function and are local to the function in
which they are declared; that is, their scope is confined to that function. Automatic
variables defined in different functions will therefore be independent of one another, even
though they may have the same name.
External variables, in contrast to automatic variables, are not confined to single functions.
Their scope extends from the point of definition through the remainder of the program.
Hence, they usually span two or more functions, and often an entire program. They are
often referred to as global variables. Since external variables are recognized globally, they
can be accessed from any function that falls within their scope. They retain their assigned
values within this scope. Therefore an external variable can be assigned a value within one
function, and this value can be used (by accessing the external variable) within another
function.
Static variables are defined within a function in the same manner as automatic variables,
except that the variable declaration must begin with the s ta ti c storage-class designation.
Static variables can be utilized within the function in the same manner as other variables.
They cannot, however, be accessed outside of their defining function
Registers are special storage areas within the computer's central processing unit. The actual
arithmetic and logical operations that comprise a program are carried out within these |
registers. Normally, these operations are carried out by transferring information from the
computer’s memory to these registers, carrying out the indicated operations, and then
transferring the results back to the computer’s memory. This general procedure is repeated
many times during the course of a program's execution.
The values of register variables are stored within the registers of the central processing
unit. A |
variable can be assigned this storage class simply by preceding the type declaration with the |
keyword register_.
b | What are preprocessor directives in C? Explain #include and # define in C.
The C preprocessor is a collection of special statements, called directives, that are executed
at the beginning of the compilation process. The #include and #define statements are
preprocessor directives. Additional preprocessor directives are #f, #elif, #else, #endlf, #if
def, tif ndef, #line and #undef. The preprocessor also includes three special operators:
defined, #, and ##. Preprocessor directives usually appear at the beginning of a program,
‘though this is not a firm requirement. Thus, a preprocessor directive may appear anywhere |The preprocessor statement #include; i.e.,
#include < filename>
where filename represents the name of a special file. The names of these special files are
specified by each individual implementation of C, though there are certain commonly used
file names such as stdio. h, st d lib. h and math. h. The suffix “h” generally designates a
“header” file, which indicates that itis to be included at the beginning of the program.
A symbolic constant is defined by writing
define name text
where name represents a symbolic name, typically written in uppercase letters, and text
represents the sequence of characters that is associated with the symbolic name. Note that
text does not end with a semicolon, since a symbolic constant definition is not a true C
statement. Moreover, if text were to end with a semicolon, this semicolon would be
treated as though it were a part of the numeric constant, character constant or string
constant that is substituted for the symbolic name.
itdefine TAXRATE 0.23
#define PI 3.141593
#idefine TRUE 1
#tdefine FALSE 0
#define FRIEND "Susan"
What are two dimensional arrays in C? How can they be declared and initialized in C?
Multidimensional arrays are defined in much the same manner as one-dimensional arrays,
except that a separate pair of square brackets is required for each subscript. Thus, a two-
dimensional array will require two pairs of square brackets
storage-class data- type arrayl expression 1 ] [ expression 2]
anm xn, two-dimensional array can be thought of as a table of values having m rows and n
columns,
float table[50][50];
char page[24][80];
The first line defines table as a floating-point array having 50 rows and 50 columns (hence
50 x 50 = 2500 elements),and the second line establishes page as a character array with
24 rows and 80 columns (24 x 80 = 1920 elements).
int values[3][4] = (1, 2, 3, 4,5, 6, 7,8, 9, 10, 11, 12);
Note that values can be thought of as a table having 3 rows and 4 columns (4 elements per
row). Since the initial values are assigned by rows (ie., last subscript increasing most
rapidly), the results of this initial assignment are as follows.
values[O]{I] = 2 values(0][2] = 3 values(0][3] = 4
values(!][O] = 5 values(I]{I] = 6 values(!][2] = 7 values[I][3] = 8
values[2][0] = 9 values[2][1] = 10 values[2][2] = 11 values[2][3] = 12
Remember that the first subscript ranges from 0 to 2, and the second subscript ranges from
int values[3][4] =
{1, 2,3, 4},
{5,6,7, 8},
{9, 10, 11, 12}
&| Write a program in C to find the sum of 20 double values entered by the user.
#include
int main()
{
int ¢;
double sum = 0, array[20];
for (¢=0; ¢< 20; c+4)
{
scanf("%d", &arrayle));
sum = sum + array[c];
}
printf("Sum = %d\n",sum);
return 0;
}
| Write a short note on strings in C.
Astring can be represented as a one-dimensional character-type array. Each character
within the string will be stored within one element of the array.
Strings are actually one-dimensional array of characters terminated by a null character "\0'.
Thus a null-terminated string contains the characters that comprise the string followed by
anull,
The following declaration and initialization create a string consisting of the word "Hello".
To hold the null character at the end of the array, the size of the character array containing
the string is one more than the number of characters in the word "Hello."
If you follow the
follows -
tule of array initialization then you can write the above statement as‘automatically places the ‘\0' at the end of the string when it initializes the array
Explain the following functions in C-
i) streat() —-streat(s1, s2) Concatenates string s2 onto the end of string s1.
{l) _strlen() —strlen(s1) Returns the length of string s1
ii!) stremp( ) — The stremp function accepts two strings as arguments and returns an
integer value, depending upon the relative order of the two strings, as follows:
1. A negative value if the first string precedes the second string alphabetically.
2. Avalue of zero if the first string and the second string are identical (disregarding case).
3. A positive value if the second string precedes the first string alphabetically.
Therefore, if stremp( string |, string2) returns a positive value, it would indicate that s tr
in g2 must be moved, placing it ahead of string lin order to alphabetize the two strings
properly.
[2]
ret]
2]
5.| Attempt any three of the following:
15
.| What are pointers in C? Write a program in C to add 2 float numbers using pointers.
A pointer is a variable that represents the location (rather than the value) of a data item,
such as a variable or an array element.
‘Suppose v is a variable that represents some particular data item. The compiler will
| automatically assign memory cells for this data item. The data item can then be accessed if
we know the location (i.e., the address) of the first memory cell.* The address of v’s
| memory location can be determined by the expression &v, where & is a unary operator,
called the address operator, that evaluates the address of its operand. Now let us assign
| the address of v to another variable, pv. Thus,
| pv= av
| This new variable is called a pointer to v, since it “points” to the location where vis stored
in memory Remember, however, that pv represents v's address, not its value. Thus, pv is
referred to as a pointer variable.
#include
int main()
ih
int first, second, *p, *q, sum;
printf("Enter two integers to add\n");
"seds6d", &first, &second);
sum = *p+"q;
printi("Sum of entered numbers = %d\n" sum);
return 0;
}arithmetic operations on a pointer just as you can on a numeric value. There are four
arithmetic operators that can be used on pointers: +4, —, +, and-
To understand pointer arithmetic, let us consider that ptris an integer pointer which
Points to the address 1000. Assuming 32-bit integers, let us perform the following
arithmetic operation on the pointer ~
After the above operation, the ptr will point to the location 1004 because each time ptr is
incremented, it will point to the next integer location which is 4 bytes next to the current
location. This operation will move the pointer to the next memory location without |
impacting the actual value at the memory location. If ptr points to a character whose |
address is 1000, then the above operation will point to the location 1001 because the next
character will be available at 1001.
Similarly ptr —
ptr decrements 4 bytes in case of interges and one byte in case of characters
Pointers may be compared by using relational operators, such as ==, <, and >. If p1 and p2
point to variables that are related to each other, such as elements of the same array, then
pi and p2 can be meaningfully compared.
| Explain the terms “array of pointers” and “pointer to an array” in C.
| ARRAYS OF POINTERS.
A multidimensional array can be expressed in terms of an array of pointers rather than a
| pointer to a group of contiguous arrays. In such situations the newly defined array will have
| one less dimension than the original multidimensional array. Each pointer will indicate the
| beginning of a separate (n- 1)-dimensional array.In general terms, a two-dimensional array
can be defined as a one-dimensional array of pointers bywriting
data - type *array[ expression 1) ;
rather than the conventional array definition,
data- type arrayf expression J { expression 2];
Similarly, an n-dimensional array can be defined as an (n - 1)-dimensional array of pointers.
by writing
data- type *array[ expression1] [ expression 2) .. .[ expression n- 1];
rather than
data- type array[ expression |] [ expression 2]. . . | expression n] ;
In these declarations data- type refers to the data type of the original n-dimensional array,
array is the array name, and expression I, expression 2, ..., expression n are positive-
valued integer
expressions that indicate the maximum number of elements associated with each subscript.
int*x[10];
Hence, x[ 01 points to the beginning of the first row, x[ 1 ] points to the beginning of the
second row, and so on. Note that the number of elements within each row is not explicitly
specified.x{0]
xf]
*@(1}#2) X(t] +2
Pointer to a array:
An array name is a constant pointer to the first element of the array. Therefore, in the
declaration -
balance is a pointer to &balance[0], which is the address of the first element of the array
balance. Thus, the following program fragment assigns pas the address of the first
element of balance ~
Itis legal to use array names as constant pointers, and vice versa. Therefore, *(balance + 4)
is a legitimate way of accessing the data at balance(4].
d.| Explain the declaration in C.
struct
{
int acct_no;
char acct_type;
char name[80];
float balance;
} account ;
account cust, customer1[10], *pe;
This structure is named account (i.e., the tag is account). It contains four members: an
integer quantity (acct-no), a single character (acct-type), an 80-element character array
(name [ 80}),and a floating-point quantity (balance).
cust is structure variable , and customer1[10] is an array of structure
*pcis a pointer of the structure account type
e.| Explain the difference between structure and union in C.
difference between structure and union in C
I aera: Lie| Example structure declarati
struct s tag
{
int ival;
float fval;
| char *cptr;
Us:
| Within a structure all members gets memory]
|allocated and members have addresses that,
increase as the deciarators are read left-to-
right. That is, the members of a structure all
| |begin at different offsets from the base of|
||the structure, The offset of a particular
member corresponds to the order of its
declaration; the first member is at offset 0.
‘The total size of a structure is the sum of the
size of all the members or more because of
| appropriate alignment.
| Within a structure all members gets memory]
|allocated; therefore any member can be
| retrieved at any time.
One or more members of a structure can be,
initialized at once.
| Example union declaration:
union u_tag
{
int ival;
float fval;
char *cptr;
For a union compiler allocates the memory,
for the largest of all members and in a union
all members have offset zero from the base,
ithe container is big enough to hold the
WIDEST member, and the alignment is
appropriate for all of the types in the union.
When the storage space allocated to the
union contains a smaller member, the extra
space between the end of the smaller
member and the end of the allocated
memory remains unaltered.
While retrieving data from a union the type
that is being retrieved must be the type
most recently stored. It is the programmer's
responsibility to keep track of which type is
currently stored in a union; the results are
implementation-dependent if something is
stored as one type and extracted as another.
A union may only be ized with 2 value
of the type of its first member; thus
union u described above (during example
declaration) can only be initialized with an
integer value.
Explain how members of a structure be acces
PROCESSING A STRUCTURE
The members of a structure are usually proce:
Therefore, we must be
writing
variable. Member where variablerefers to-th
separates the variable name from the menhet
Accessing Structure Members
1. Array elements are accessed using
able to access the individual structure members. A structure member can be accessed by
member refers to the rAme of a member within the structure. Notice the period (.) that,
sed by a variable and a pointer in C.
ssed individually, as separate entities.
e name of a structure-type variable, and
fname.
sit
the Subscript variable , rly Structure| #include
|
struct Vehicle
{
int wheels;
char vname|20];
char color[10};
| va = "Nani
"Red"
int main()
<
printf("Vehicle No of Wheels : %d",vi.wheels);
printf("Vehicle Name = %s",v1.vname];
printf("Vehicle Color: %s",vi.color);
return(0);
}
| More complex expressions involving the repeated use of the period operator may also be
written. For
example, ifa structure member is itself a structure, then a member of the embedded
structure can be accessedby writing
variable. member. submember
where member refers to the name of the member within the outer structure, and
submember refers to the name of the member within the embedded structure. Similarly, it
a structure member is an array, then an individual array element can be accessed by writing
variable. member{ expression] where expression is a nonnegative value that indicates the
| | array element.
Accessing Structure Members with a pointer
An individual structure member can be accessed in terms of its corresponding pointer
variable by writing
ptvar- >member
where ptvar refers to a structure-type pointer variable and the operator -> is comparable to
the period (.)
operator Thus, the expression
ptvar->member
|_| isequivalent to writing
variable. member
where variable is a structure-type variable, The operator -> falls into the higheststructure (ie.,to access a member of a structure that is itself a member of another
structure). Hence, a submember can be accessed by writing
ptvar- >member. submember
Similarly, the -> operator can be used to access an element of an array that is a member of
a structure. This is accomplished by writing
ptvar- >member{ expression]
where expression is a nonnegative integer that indicates the array element.