Besides what Handodo was saying, let me note that the most prominent difference for all kinds of types is that you are not allowed to change the "const" parameter inside the function (*). So, if you need, for example, the next character and call c := succ(c) this is only possible in func1, but not in func2. Therefore, using "const" is a good documentation tool to indicate already in the signature of a function "hey, don't care about this parameter, it will not change."
----
(*) Hmmm, not completely exact: When the parameter is a class you ARE allowed to change properties. Quite confusing...