A function returning address: A function can return address of aggregate data type variable or user defined data type variable to access the data.
#include<stdio.h> int* add(int,int); void main() { int a, b, *c; printf(“enter two numbers : “); scanf(“%d%d”,&a,&b); c = add(a,b); printf(“sum : %d\n”,*c); } int* add(int x, int y) { int z; z=x+y; return &z; } |
Dangling pointer:
- In the above code, add function returns the address of local variable.
- Local variables will be deleted once the function execution completes.
- As we return the address of location, the value of that location may change by another function before processing the data.
- Hence Dangling pointers will not provide accurate results(values).
#include<stdio.h> int *fun() { int x = 5; return &x; } int main() { int *p = fun(); fflush(stdin); printf(“%d”, *p); return 0; } |