how linux knows ipaddress of it?

which kernel data structure stores ipaddress. and how to change the ipaddress other that ifconfig.

in case of dhcp client daemon how linux automatically assigns ipaddress fetched?

Would some one answer these questions please?

If I remember correctly all information for IPv4 is defined in include/linux/ip.h in the source tree, used by almost everything in net/ and drivers/net/ (all paths relative to the kernel source path)
As for the DHCP client daemon, it probably sets the IP address via a kernel call.

Hey thanks for your info

You can use the ioctl SIOCGIFADDR to get the IP address and SIOCSIFADDR to set the IP address.