Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Пример 13.1






    #include< stdio.h>

    int int max_int(int a, int b)

    {return a> b? a: b; }

    main()

    { int max_int(int a, int b);

    m1, l;

    m1=max_int(5, 9);

    l=strlen(" по значению");

    В качестве фактических аргументов передаются либо изображения констант, либо выражения.

    Этот способ используется для передачи входных аргументов.

    Формальный Фактический
    имя скалярной переменной Изображение константного выражения
    -имя массива символов -имя литерного указателя  

     

    13.1.2 Передача аргументов по имени

    Пример 13.2

    int max_int(int a, int b)

    {return a> b? a: b; }

    main()

    { int max_int(int a, int b);

    int a, b, m1;

    int x[]={-1, 10, -200, -9};

    int m2, l1, l2, l3;

    char s[]=" пл наименованию";

    char *ms[]={" Белеет", " парус" };

    int *px;

    char *pms;

    int i;

    scanf(" %d", & a);

    /*значение а вводит пользователь*/

    b=25;

    m1=max_int(a, b);

    /*max_int вызывается и ей передаётся значение*/

    px=x;

    for(i=0; i< 3; i++)

    {m2=max_int(*px++, x[i+1]);

    printf(" m2=%d", m2);

    }

    l1=strlen(s);

    pms=ms;

    for(i=0; i< 2; i++)

    {l2=strlen(ms[i]);

    l3=strlen(*pms++);

    printf(" l2=%d l3=%d", l2, l3);

    }

    }

    Этот способ используется только(!!!) для передачи входных аргументов.

    Формальный Фактический
    -имя скалярной переменной; -имя скалярной переменной; -имя элемента массива; -указатель на элемент массива;
    -имя структуры; -имя структуры; -имя элемента массива структур; -указатель на элемент массива структур;
    -имя массива; -имя массива;
    Строки: -имя массива символов; -имя литерного указателя; -имя массива символов; -имя литерного указателя; -имя элемента массива символов; -имя элемента массива литерных указателей;

     

    13.1.3 Передача аргумента по ссылке

    Пример 13.3

    /*так нельзя!!!!!!!!!! */

    void obmen(int a, int b)

    { int r;

    r=a;

    a=b;

    b=r;

    }

    Пример 13.4

    /*нужно только так!!!! */

    …………

    void obmen(int *a, int *b)

    { int r;

    r=*a;

    *a=b;

    *b=r;

    }

    main()

    {

    int x, y;

    void obmen(int *, int *);

    scanf(" %d %d", & x, & y);

    printf(" x=%d y=%d", x, y);

    obmen(& x, & y);

    printf(" x=%d y=%d", x, y);

    }

    Формальный Фактический
    -имя указателя на скалярную переменную; -адрес скалярной переменной; -адрес элемента массива;
    -имя массива; -имя массива;
    -имя указателя на структуру; -адрес структуры;

     

    Этот способ используется для передачи выходных и обновляемых аргументов.

    !!! Количество, типы и порядок следования формальных и фактических аргументов должны совпадать.

    13.2 Особенности передачи аргументов функций в языке С

    Все аргументы передаются по значению: вызываемой функции-копии.

    !!! Вызываемая функция не может непосредственно изменить переданные ей параметры.

    Пример 13.5

    /*возведение x в степень n*/

    /*вариант 1*/

    int power 1(int x, int n)

    {

    int i, p;

    p=1;

    for(i=0; i< =n; i++)

    p=p*x;

    return p;

    }






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.