On Tue, 04 Aug 2015 08:19:37 +0200 Franz Fellner <alpine.art...@gmail.com> wrote:
> Fernando Rodriguez wrote: > > On Monday, August 03, 2015 6:41:22 PM walt wrote: > > > That line declares *hostname as a constant and then the statement > > > below proceeds to assign a value to the 'constant'. I wonder how > > > many hours of frustration have been suffered by student > > > programmers while trying to understand the logic behind that. > > > > Because it's not a constant, it's a pointer-to-constant :) > Both of you are right, you can read the declaration in both ways: > hostname is of type "pointer to const char". > *hostname is of type "const char". > > But in this case it is not "*hostname", that get's a value assigned, > it's simply "hostname". If you do not set hostname to NULL it stays > uninitialised, which means its value is what the actual memory is set > to - quite undefined. Correct initialization is really important and > should be done consequently so it gets an automatism ;) (would avoid > issues like this) > > > > > const char *hostname; /* pointer to constant char */ > > char *const hostname; /* constant pointer to char */ > > const char *const hostname; /* constant pointer to constant char */ > > > > Is that confusing enough? confusing++ Thank you both for being patient enough to teach the ineducable :) Let me give you one more example of syntax that I find unreasonable, and then I'll ask my *real* question, about which I hope you will have opinions. Okay, the statement I referred to above uses this notation: if (!link->network->hostname) <this notation makes sense to me> r = sd_dhcp_lease_get_hostname(lease, &hostname); <this doesn't> In this context does '&hostname' mean a-pointer-to-a-pointer-to-the- charstring we actually need? Doesn't this code seem needlessly complicated? <okay, screed over, thanks for listening> Somewhere I read that there was really only *one* java program ever written, and every subsequent java program was written by cut-and-paste from the first one. Is that how professional developers learn the art of programming? I really would like to hear your opinions on that question because I feel it's an important topic. Thanks guys.