Generic pointer:
void pointer in c is known as generic pointer.
Literal meaning of generic pointer is a pointer which can point type of data.
Example:
void *ptr;
Here ptr is generic
pointer.
Important points about
generic pointer in c?
1. We cannot dereference generic pointer.
#include<stdio.h>
#include<stdio.h>
#include <malloc.h>
int main(){
void *ptr;
printf("%d",*ptr);
return 0;
return 0;
}
Output: Compiler error
2. We can find the
size of generic pointer using sizeof operator.
#include <string.h>
#include<stdio.h>
#include<stdio.h>
int main(){
void *ptr;
printf("%d",sizeof(ptr));
return 0;
return 0;
}
Output: 2
Explanation: Size of any type of near pointer in c is two
byte.
3. Generic pointer can
hold any type of pointers like char pointer, struct pointer, array of pointer
etc without any typecasting.
Example:
#include<stdio.h>
#include<stdio.h>
int main(){
char c='A';
int i=4;
void *p;
char *q=&c;
int *r=&i;
p=q;
printf("%c",*(char *)p);
p=r;
printf("%d",*(int *)p);
return 0;
return 0;
}
Output: A4
4. Any type of pointer
can hold generic pointer without any typecasting.
5. Generic pointers
are used when we want to return such pointer which is applicable to all types
of pointers. For example return type of malloc function is generic pointer
because it can dynamically allocate the memory space to stores integer, float,
structure etc. hence we type cast its return type to appropriate pointer type.
Examples:
1.
char *c;
c=(char *)malloc(sizeof(char));
2.
double *d;
d=(double *)malloc(sizeof(double));
3.
Struct student{
char *name;
int roll;
};
Struct student *stu;
Stu=(struct student *)malloc(sizeof(struct student));
No comments:
Post a Comment