1)#include <iostream.h>

int main()
{
int *a, *savea, i;

savea = a = (int *) malloc(4 * sizeof(int));

for (i=0; i<4; i++) *a++ = 10 * i;


for (i=0; i<4; i++) {
printf("%d\n", *savea);
savea += sizeof(int);
}
return 0;
}
2)#include <iostream.h>

int main()
{
int *a, *savea, i;

savea = a = (int *) malloc(4 * sizeof(int));

for (i=0; i<4; i++) *a++ = 10 * i;


for (i=0; i<4; i++) {
printf("%d\n", *savea);
savea ++;
}
return 0;
}
The output of this two programs will be different why?

Answers were Sorted based on User's Feedback



1)#include <iostream.h> int main() { int *a, *savea, i; savea = a = (int *) malloc(4 *..

Answer / uma sankar pradhan

The output differs due to the followinf two statements

savea+=sizeof(int)
and
savea++

savea++
=>savea=savea+1
=>savea=savea+1*(sizeof(int))


savea+=sizeof(int)
=>savea=savea+2
=>savea=savea+2*sizeof(int)

sizeof(int) is called the scalefactor of savea

Is This Answer Correct ?    5 Yes 1 No

1)#include <iostream.h> int main() { int *a, *savea, i; savea = a = (int *) malloc(4 *..

Answer / d289

because when incremented by size of int(4), point to invalid
position in the int array. Hence it will print out only one
correct out put for the first element and garbage for the
rest in the first program while for the second program it
will print out the contents of the int array correctly.

Is This Answer Correct ?    3 Yes 0 No

1)#include <iostream.h> int main() { int *a, *savea, i; savea = a = (int *) malloc(4 *..

Answer / ips

In 1st Case(savea++)
--------------------
The Integer Pointer Is Incremented just Once.(as it Is
Implimented in c/c++).which means the pointer is shifted
4bytes(size of type 'int') ahead.

In 2nd Case(savea+=sizeof(int))
-------------------------------
Here The Statement implies:-
savea+=4;
The above statement says that,the integer pointer is to
be increamented 4times.means,the Pointer now is shifted 16
bytes(4*sizeof type 'int').which is Out of scope of the
integer array in the Programme.

Is This Answer Correct ?    3 Yes 1 No

1)#include <iostream.h> int main() { int *a, *savea, i; savea = a = (int *) malloc(4 *..

Answer / shil chawla

the program will not RUN becoz #include<iostream.h>
does not support "printf()".

Is This Answer Correct ?    1 Yes 1 No

1)#include <iostream.h> int main() { int *a, *savea, i; savea = a = (int *) malloc(4 *..

Answer / mahesh

first program prints sum of saved and size of int

second one prints only the contenst of saved

Is This Answer Correct ?    2 Yes 3 No

Post New Answer

More C++ General Interview Questions

What is helper in c++?

0 Answers  


When to use Multiple Inheritance?

6 Answers  


What are built-in functions? What is the syntax for the definition?

0 Answers  


Define a constructor?

0 Answers  


What is a tree in c++?

0 Answers  






Can recursive program be written in C++?

0 Answers  


Which algorithm do you like the most? Why?

2 Answers   Google,


if int1 has the value 12, int has the value 18, and int3 has the value 21, what is the result: int1 < int2 && int2 < int 3

3 Answers  


If you push the numbers (in order) 1, 3, and 5 onto a stack, which pops out first a) 1 b) 5 c) 3

0 Answers  


Where Malloc(), Calloc(), and realloc() does get memory?

0 Answers  


What is the benefit of c++?

0 Answers  


Give the difference between the type casting and automatic type conversion. Also tell a suitable C++ code to illustrate both.

0 Answers   TCS,


Categories