Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Передача адресов и указателей в функции в C: практическое руководство

C: Передача адресов и указателей в функции

Освойте передачу адресов памяти и указателей в функции на C с понятными примерами и экспертными пояснениями.

В C передача адреса вместо значения позволяет функции напрямую манипулировать исходной переменной. Этот метод, называемый передачей по указателю, необходим для эффективного кода и изменения данных в разных областях видимости.

Пример 1: Обмен двух целых чисел по ссылке

#include <stdio.h>
void swap(int *n1, int *n2);
int main(void) {
    int num1 = 5, num2 = 10;
    /* Передаем адреса num1 и num2 */
    swap(&num1, &num2);
    printf("num1 = %d\n", num1);
    printf("num2 = %d", num2);
    return 0;
}
void swap(int *n1, int *n2) {
    int temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

Запуск этой программы дает:

num1 = 10
num2 = 5

Функция swap() получает указатели n1 и n2, указывающие на исходные переменные num1 и num2. Разыменовывая эти указатели (*n1 и *n2), функция меняет местами фактические значения в памяти, поэтому main() видит обновленные числа. Обратите внимание, что swap() возвращает void, так как она изменяет свои аргументы напрямую.

Пример 2: Увеличение значения через указатель

#include <stdio.h>
void addOne(int *ptr) {
    (*ptr)++; /* Увеличиваем значение по заданному адресу */
}
int main(void) {
    int i = 10;
    int *p = &i;
    addOne(p);
    printf("%d", *p); /* Выводит 11 */
    return 0;
}

Здесь p хранит адрес i. Функция addOne() получает тот же адрес, разыменовывает его и увеличивает базовое значение. После вызова *p (и, следовательно, i) отражает новое значение 11.

Эти примеры иллюстрируют силу передачи по указателю: функции могут изменять переменные, определенные вне их области видимости, обеспечивая эффективную манипуляцию данными без лишнего копирования.

Язык C

  1. Понимание ключевых слов и идентификаторов C#: правила, списки и лучшие практики
  2. Освоение побитовых и сдвиговых операторов в C#: полное руководство
  3. Классы и объекты в C#: Фундаменты надёжного ООП
  4. Абстрактные классы и методы в C#: практическое руководство
  5. Частичные классы и методы в C#: понимание и применение
  6. Sealed-классы и sealed-методы в C#: когда использовать, примеры и повышение безопасности кода
  7. Как передавать одномерные и двумерные массивы в функции в C — практическое руководство
  8. Освоение указателей в C: практическое руководство от экспертов
  9. Понимание взаимосвязи между массивами и указателями в C
  10. Освоение структур и указателей в C: практическое руководство