If you are saving the image as a JPEG, or in any other compressible format, then there might be data loss on writing which could cause a difference between the input and the output. How different is "totally different"? If there really is no relation, check that imwrite and imread are really using the same pathname.
One solution would be to use save and load rather than imwrite and imread - that way the data will be returned exactly unchanged.
I am not sure what you mean in your last sentence. Normally, if you are going to use the value of a variable in the same program, you do not need to write and read it at all. If you want to save the value at some stage, calling imwrite will not change the value.
You may need to post your code to clear this up.