C строки имеют нулевое окончание, что означает, что считается, что они заканчиваются везде, где появляется ноль (записано '\0'
в C).
Если я начну со строки «Переполнение стека» и я перезаписываю пробел '\0'
, теперь у меня есть строка «Stack». Хранилище для «переполнения» все еще существует, но оно не является частью строки в соответствии с C функциями, такими как strlen()
, printf()
et c. Фактически, если я удержу указатель на часть «O» исходной строки, это будет так же, как если бы были две строки: «Stack» и «Overflow», и вы все равно можете использовать обе из них.
Это как если бы я приехал туда, где вы живете, и построил огромную стену через дорогу прямо перед вашим домом. Дорога теперь сокращена, и люди на моей стороне не будут знать, что ты там.