- variable length, which are null-terminated
- fixed length, which are not null-terminated
- constant strings
Code: Select all
' SharpBASIC stre00 ' ------------------- ' option strict hint; incl "lib/sys.sbi"; dim is s0: str * 24 = "The apple tree is empty."; s1: str; s2: str = "Next year is a new round."; end; main do s1 = s0; print(s1); s1 = s2; print(s1); end;
In this example, the fixed length string s0 is copied to s1. The main difference of these two string types lies in the string descriptor, which in SharpBASIC has the format [addr:size].
The size in the descriptor of a variable length string is always null, which tells the compiler that the string pointed to by the address in the descriptor is a null-terminated string. By contrast, the size in the descriptor of a fixed length string is always the actual fixed size of the string.
Constant strings in SharpBASIC do not have a descriptor and are null-terminated.