- Я понимаю, что переменные и указатели в теории (одна возвращает значение, а другая возвращает адрес значения в системе.) Что я не понимаю, так это когда уместно использовать одну над другой,Любой совет?
В отличие от Java, Python и .NET, где все переменные являются «указателями на объекты», которые можно передавать, в C вещи могут существовать в двух местах.
Впрограммный код (переменная появляется при нажатии на код, исчезает при возврате функции).Например:
int my_arr[3];
или в «куче», которая является памятью, а не частью программы, которая динамически запрашивается следующим образом:
int *my_arr_pointer = malloc(sizeof(int) * 3);
Второй пример близок ккак Java, Python и .NET обмениваются вещами.Однако, когда вы используете malloc () для получения памяти, вам нужно использовать free () для нее позже ... или ваша программа засасывает и тратит память компьютера.Так что используйте технику, чтобы убедиться, что вы используете постоянный объем памяти.Используйте второе, чтобы написать более гибкое приложение.C не имеет управления памятью, поэтому первый подход делает более быструю и простую в отладке программу ... которая требует копирования объектов между функциями по сравнению со вторым подходом, где проще иметь массив гибких размеров, в котором программа растет и сжимаетсяпо размеру ... но это немного сложнее, чтобы написать.Используйте то, что подходит.
3. Что такое свойство при объявлении класса?Кажется, что свойства и переменные класса идентичны, но я знаю, что должно быть какое-то критическое различие.
Свойства являются обертками для переменных класса.«Сеттер» и «геттер».Это позволяет вам:
a) использовать точку останова, чтобы узнать , где в вашем коде задает эту переменную.
b) для проверки безопасности или разрешений,или для проверки установленного значения.
c) Свойство не должно привязываться к переменной.Это может создать «иллюзию», когда данные генерируются динамически.например, свойство size может подсчитывать буквы в строке, когда вы запрашиваете его, а не сохранять его.
d) больше гибкости для изменения класса позже без изменения всего, что обращается к этому свойству.