2016-07-20 2 views
-5

Почему *strptr = 0 обрезает строку? (C)Почему * StrPtr = 0 усечения строка? (C)

Почему значение ASCII 30 0 становятся равными 0 в нуль?

Здесь я запутался с номером 0, строками 0 и строкой termianl 0.

ваши объяснения будут оценены.

+3

'0 == '\ 0'',' 0x30 ==' 0''. – kay

+0

Пахнет, как будто вы хотели написать '* strptr = '0''? – mvidelgauz

+0

Я путаюсь здесь, 1 + 1 = 2, значение ascii 1 есть? –

ответ

6

Точнее, есть три лексические элементы, которые содержат нулевой символ: 0 (без кавычек), '0' (цитируется, как правило (но не всегда) равна 48 или 0x30 некотируемого) и '\0' (равной 0, но по своему характеру обозначения).

Вопрос заключается в двух разных значениях ... '0' != '\0'. Забудьте о 30, 48 и т.д. Просто помните '0' и '\0' разные характеры, и '\0' является строка терминатор, который имеет значение 0 ...

Я думаю, что вы имели в виду использовать '0' (акцент на кавычки) ,

3

Все стандартные библиотечные строковые процедуры обрабатывают символ '\0' в качестве ограничителя строк, поэтому, если вы поместите его в начале строки, все они не видят обработки данных, потому что первый символ является терминатором, поэтому строка пуста. И да, по стандарту '\0' - символ, который имеет значение 0. В результате: '\0' == 0 - это правда.

Смежные вопросы