Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Predstavlenie_dannykh_v_kompyuter1 (1).docx
Скачиваний:
8
Добавлен:
26.09.2019
Размер:
161.34 Кб
Скачать

12). Указатели. Применение указателей. Объявление указателей. Связь указателей и массивов. Использование указателей в функциях.

Указатель – это переменная, значением которой является адрес, по которому располагаются данные.

Типы данных необходимы для того, чтобы мочь выделить кусок памяти определенного размера для хранения данных и определения того, что это за данные ибо без явного определения непонятно является ли набор нулей и единиц числом, символом или чем-нибудь еще.

Примеры объявления указателей на различные типы переменных:

unsigned int * ptr; /* переменная ptr представляет собой указатель на целую беззнаковую) переменную*/

float * x; /* переменная х указывает на переменную с плавающей точкой*/

char *buffer ; /*объявляется указатель с именем buffer который указывает на символьную переменную*/

Указатели и массивы

Допустимо бесконечно большое число различных типов указателей и массивов. Далее следуют типовые примеры.

Указатель на основной тип:

char *p;

Переменная р является указателем на символ, т.е. этой переменной должен присваиваться адрес символа.

Указатель на указатель:

char **t;

Переменная t - указатель на указатель символа.

Одномерный массив:

int a[50];

Переменная а - массив из 50 целых чисел.

Двумерный массив:

char m[7][50];

Переменная m - массив из семи массивов, каждый из которых состоит из 50 символов.

Массив из семи указателей:

char *r[7];

Массив r состоит из указателей на символы.

Указатель на функцию:

int (*f)();

f - указатель на функцию, возвращающую целое значение.

Использование указателей в функциях.

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

#include <stdio.h>

void swap_values(int *a, int *b)

{

int temp;

temp = *a; // Временная переменная для хранения значения а

*а = *b; // Значение Ь присваивается а

*b = temp; // Значение а присваивается Ь }

}

void main(void)

{

int one = 1, two = 2;

swap_values(&one, &two);

printf("one равно %d two равно %d\n", one, two);

}

Как видно, внутри функции для нахождения значения по указателю используется операция 'звездочка" (*). Программа передает адреса переменных в функцию, используя операцию адресации (&).

13). Понятие о структуре. Объявление структур. Операции со структурами.

Структура - это набор данных, где данные могут быть разного типа. Например, структура может содержать несколько переменных типа int и несколько переменных типа char. Переменные, которые содержаться в структуре называются членами или полями структуры. Структуры можно определять с помощью ключевого слова struct.

В языке С есть возможность объявлять переменные структуры при описании структуры:

struct student

{

char name[50];

int kurs;

int age;

} s1, s2;

Переменные s1 и s2 являются переменными типа struct student.

14). Работа с файлами. Файловый указатель. Функции, предназначенные для работы с файлами.

#include

#include

void main( void )

{

FILE *file;

char* file_name = "file.txt";

char load_string[50] = "none";

file = fopen( file_name, "w" );

fputs( "string", file );

fclose( file );

file = fopen( file_name, "r" );

if( file != 0 )

{

fgets( load_string, 50 , file );

cout

Описание функций работы с файломи находятся в библиотеке stdio.h

Сначала надо создать указатель на переменную типа FILE ( FILE* file; ).

Открытие файла производится вызовом функции fopen ( file = fopen( file_name, "w" ); )

Первый параметр этой функции - имя файла, второй - указывает в каком режиме должен быть открыт файл. "w" - открыть для записи, "r" - открыть для чтения, "a" - дополнение файла( это наиболее используемые режимы, хотя есть и другие ). Запись и считывание данных из файла осуществляется следующими функциями : fputc, fputs, fgetc, fgets, fprintf, fscanf( описание этих функций смотрите в stdio.h).

Закрытие файла осуществляется вызовом функции fclose ( fclose( file ); ).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]