Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Заказ памяти для массива структур.

tel=(TEL *)malloc(sizeof(TEL)*n);

где: TEL – тип

tel – массив строки

malloc – размер структуры в байтах

sizeof – размер одного элемента структуры в байтах

n – количество элементов в структуре

Функции; формальные и фактические аргументы. Имя функции как аргумент другой функции.

Функция задаётся следующим образом:

тип_функцииимя_функции (формальные аргументы)

{

                   текст

}

имя_функции – это идентификатор;

формальные_аргументы – это список имен аргументов,

которые будут переданы функции.

Функция не может быть описана внутри других функций.

К заданной функции можно обратиться из любой другой функции, при этом возможны две формы обращения:

1. имя_переменной = имя_функции(фактические аргументы);

2. имя_функции(фактические аргументы);

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

Классы памяти; область действия имен переменных. Блоки.

Класс памяти auto

Обычная переменная, объявленная внутри блока без указания для неё иного класса, имеет класс памяти auto по умолчанию. Пример:

intnVar = 5;

Такая переменная видна внутри блока.

Переменные с классом памяти auto размещаются в стеке.

Итак по умолчанию локальная переменная имеет класс памяти auto.

Класс памяти static

Переменные, объявленные как static, т.е. статические, сохраняют своё значение между вызовами.

Ещё одна тонкость. static переменная инициализируется только один раз. Если бы это было иначе, то значение статической staticVar обнулилось бы при повторном вызове.

По умолчанию все глобальные переменные являются статическими. И видны они только в своём файле.

Класс памяти extern

Класс памяти extern в C используем в двух случаях:

если переменная объявляется в программе ниже, чем ссылка на неё;

если переменная объявлена в другом модуле.

Класс памяти register в

Применение модификатора register есть рекомендация компилятору хранить данную переменную в регистре, а не в оперативной памяти. Не факт, что так и будет. Если программа часто обращается к переменной, то есть смысл объявить её с модификатором register.

Применять register можно только к near указателям и целому типу. Использовать register можно и при указании формальных параметров функций.

 

Преобразования данных при помощи функций sprintf и sscanf.

Библиотека языков C, C++ включает две функции sprintf и sscanf, с помощью которых реализуются прямые и обратные форматные преобразования данных в оперативной памяти. Техника их использования ничем не отличается от функций printf/fprintf и scanf/fscanf. Разница только в том, что первым аргументом новых функций является указатель на строку – массив типа char, расположенный в оперативной памяти. Для функции sscanf эта строка является источником данных, а для функции sprintf в эту строку помещаются результаты преобразования данных из машинного представления.

Форма записи:

sscanf(str,"список_форматов", список_ввода);

sprintf(str,"список_форматов \n",список_вывода);

К форматным преобразованиям в оперативной памяти можно прибегнуть и при работе с двоичным файлом. Перед записью в файл с помощью функции sprintf машинные форматы данных преобразуются в символьную строку, которая потом записывается в двоичный файл. По сути дела, такое же преобразование происходит при записи данных в текстовый файл

Аргументы функции main.

Имеется два встроенных аргумента функции main: argc и argv.                                                      Форма записи:

intmain(intargc, char *argv[]) {...}

Аргумент argc типа integer содержит в себе количество аргументов командной строки.

Аргумент argv типа char - указатель на массив строк. Каждый элемент массива указывает на аргументы командной строки. Один параметр отделяется от другого пробелами.

argv[0] - полное имя запущенной программы

argv[1] - первая строка записаная после имени программы

argv[2] - вторая строка записаная после имени программы

argv[argc-1] - последняя строка записаная после имени программы

argv[argc] - NULL



<== предыдущая лекция | следующая лекция ==>
Массивы; их описание, размещение в памяти, инициализация. | Вы можете получить консультацию у доктора и аюрведическое лечение.
Поделиться с друзьями:


Дата добавления: 2018-11-11; Мы поможем в написании ваших работ!; просмотров: 479 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Вы никогда не пересечете океан, если не наберетесь мужества потерять берег из виду. © Христофор Колумб
==> читать все изречения...

4059 - | 3861 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.