int * const ptr —> ptr is constant pointer. You can change the value at the location pointed by pointer p, but you can not change p to point to other location. int const * ptr —> ptr is a pointer to a constant. You can change ptr to point other variable. But you cannot change the value pointed by ptr.
int * const ptr :
int
main()
{
int
x = 5;
int
*
const
ptr = &x;
++(*ptr);
printf
(
"%d"
, x);
return
0;
}
Output : 6
above program works well because we have a constant pointer and we are not changing ptr to point to any other location. We are only icrementing value pointed by ptr
int const * ptr
int
main()
{
int
x = 5;
int
const
* ptr = &x;
++(*ptr);
printf
(
"%d"
, x);
return
0;
}
Output: Compiler Error
In the above program, ptr is a pointer to a constant. So the value pointed cannot be changed
#include<stdio.h> int main() { typedef static int *i; int j; i a = &j; printf ( "%d" , *a); return 0; } |
(A) Runtime Error
(B) 0
(C) Garbage Value
(D) Compiler Error
Answer: (D)
Explanation: Compiler Error -> Multiple Storage classes for a. In C, typedef is considered as a storage class. The Error message may be different on different compilers
(B) 0
(C) Garbage Value
(D) Compiler Error
Answer: (D)
Explanation: Compiler Error -> Multiple Storage classes for a. In C, typedef is considered as a storage class. The Error message may be different on different compilers
No comments:
Post a Comment