C Programming - Pointers - Discussion

Discussion Forum : Pointers - True / False Questions (Q.No. 3)
3.
The following program reports an error on compilation.
#include<stdio.h>
int main()
{
    float i=10, *j;
    void *k;
    k=&i;
    j=k;
    printf("%f\n", *j);
    return 0;
}
True
False
Answer: Option
Explanation:
This program will NOT report any error. (Tested in Turbo C under DOS and GCC under Linux)

The output: 10.000000
Discussion:
23 comments Page 1 of 3.

KRISH BHANDERI said:   2 years ago
@All.

Here is my code;

#include<stdio.h>
int main()
{
float i=10, *j;
void *k;
k=&i;
j=k;
printf("%f\n", *j);
return 0;
}

in the Above program, void pointer holds the Address of Float i

Remember Whenever we use a void pointer we have to typecast it to print the value
printf("%d",*(float*)k);

But here what we done is we assigned the address of i which is hold by k
j=k

now j holds the address of i
So, it will print 10.000000.

Rashmi said:   5 years ago
Before assigning a void pointer => void *k, typecasting has to be done => (int*)k or *((int*)k).

Mohammad said:   8 years ago
In code blocks on windows 7.

Error: invalid conversion from 'void*' to 'float*' [-fpermissive].

Siya said:   9 years ago
What is meant by typecasting?

Sboy said:   9 years ago
Invalid conversion compile time error in codeblocks windows.

Suman said:   10 years ago
This program gives error.

Error 1: error C2440: '=' : cannot convert from 'void *' to 'float *'.

2 IntelliSense: A value of type "void *" cannot be assigned to an entity of type "float *".

Chipku said:   10 years ago
Can k=&i possible?

Anjaneyareddy said:   10 years ago
Everything is ok. But 1 thing I can't understood. After printing float value 10.000000. Why printed 6 0's?

Patel said:   1 decade ago
What is meaning of void *k.

Vidhiyasri said:   1 decade ago
It is very useful and I will try my best.


Post your comments here:

Your comments will be displayed after verification.