I&#x27;m not sure I understand your example. Knowing how arrays (or pointers) are handled in C is enough to understand why you can&#x27;t have string assignment by value. How C treats things is all you really need to know if you want to use the language. This isn&#x27;t just true for C. In my experience, people tend to have more difficulty with string assignment in Java than C, but you usually don&#x27;t hear people say that they need to go to a lower level to really understand Java.<p>Understanding the why is interesting - like it is for any language. And like in many languages, the why tends to be complicated and somewhat arbitrary at times. If you&#x27;re really interested in the why rather than the what, a book on the history of C will probably be more useful than learning assembly.