Условная компиляция
Позволяет компилировать не все части программы. Директивы условной компиляции используются в больших программах.
#if константное_выражение
[фрагмент текста]
[#elif константное_выражение
фрагмент текста]
...
[#else фрагмент текста]
#endif
Результатом вычисления константного_выражения является целое число. Если оно не 0, то выполняется фрагмент текста программы от директивы #if до одной из директив #else, #elif или #endif.
1. #ifdef CI
#include <stdio.h>
#define MAX 80
#else
#include <iostream.h>
#define MAX 132
#endif
2. #ifndef – если макроопределение не определено
#ifndef MY_FILE // файл будет компилироваться только один раз
#define MY_FILE //когда макрос не определен
#include “my_fyle”
#endif
3. #if SYS == ”IBM”
//похоже на оператор, за ним следует константное выражение
//которое считается истинным, если оно не равно 0
#endif
4. Можно исключить блок программы
#ifdef любое имя
*****
#endif
#if defined(__LARGE__)||defined(__HUGE__)
typedef INT long
#else
typedef INT int
#endif
УКАЗАТЕЛИ
С помощью оператора return в вызываемую программу можно передать только одну величину. Для того, чтобы передать 2 величины надо пользоваться «указателями».
Указатель – некоторое символическое представление адреса.
Память состоит из байтов, каждый из которых пронумерован, начиная с 0, 1, 2 ... Номер – это адрес. В Си есть переменные, которые могут содержать этот адрес – указатели и операция взятия адреса - &.
int pooh=1; // определение и инициализация переменной. pooh – её имя.
printf ("%d %d\n",pooh, &pooh); // на экране: 1 12136
Машинный код команды можно выразить словами. "Выделить 2 байта памяти, присвоить им имя pooh. Поместить в ячейку с адресом 12136 число". Фактический адрес этой переменной 12136, а его символическое представление &pooh.
Значением переменной типа указатель служит адрес некоторой величины. Дадим имя этой переменной ptr; тогда можно написать ptr=&pooh;
В этом случае говорим "ptr указывает на pooh", где ptr-переменная, &pooh-константа.
ptr=&bah; - теперь указывает на bah.
Итог: если за знаком & стоит имя переменной, то результатом опции
&nurse –будет получение адреса переменной nurse,
а если за знаком* следует имя переменной, то результатом программы
nurse=22;
ptr=& nurse; //указатель на nurse
val=*ptr;
будет присвоение значения 22 переменной val.
ptr=&pooh;
val=*ptr; ó val=pooh;
Если pbarn=&barn; то *pbarn – это величина, помещенная по адресу &barn
Операция косвенной адресации *
Для доступа к переменной, адрес которой помещен в ptr, используется операция косвенной адресации.
val=*ptr; //val==bah
*ptr = 10; //bah==10
Дата добавления: 2016-02-02; просмотров: 786;