The statement
a = b
causes the value of the array b to be copied into the array a. It is not necessary to allocate any new hidden memory.
The notation string(1:1) is the correct syntax to designate the character in string at location 1.
Depending on the circumstance, Fortran passes procedure arguments by one of three methods: “reference” (the address of the argument is passed), “value” (the value of the argument is passed), or “descriptor” (the address of a descriptor for the argument is passed). Descriptors are sometimes called “dope vectors”.