C не хранит значения так же, как Javascript или Python.В C нет такой вещи как переменная без значения.Вы никогда не сможете определить, инициализирована ли переменная или нет, только взглянув на саму переменную.Переменная может быть неинициализирована, но ее использование приведет к неопределенному поведению , и наиболее вероятным последствием ub в этом случае является случайное значение, которое с высокой вероятностью равно нулю.
Если вы делаете объявление float f
, то вы резервируете определенный объем памяти (обычно 4 байта для числа с плавающей запятой).Каждый раз, когда вы используете f
в выражении, любой битовый шаблон, найденный по адресу &f
, будет интерпретироваться как число с плавающей запятой.Некоторые битовые шаблоны могут быть специальными для чисел с плавающей запятой, но NULL не является одним из них, но когда дело доходит до целых чисел, КАЖДЫЙ битовый шаблон является действительным регулярным целым числом.
Вы просто должны убедиться, что tab
правильно инициализирован перед передачей его вашей функции.Сама функция не может определить, так ли это.
В C NULL является константой, обычно типа void*
, но также может иметь тип int
.Предназначение предназначено для указателей и не должно использоваться ни для чего другого.
Кроме того, C является языком статической типизации, что означает, что переменная никогда не может изменять тип.Поплавок никогда не может содержать буквы.Вы можете с помощью casting создать число с плавающей запятой, содержащее тот же битовый шаблон, что и целое число, строку из четырех символов, указатель или что-то еще, но, скорее всего, результат не будет иметь смысла.