Лабораторная работа: Управляющие структуры языка "Си". Программирование с использованием указателей

Объявление указателей.

Если нужно объявить переменную для хранения, например, возраста то можно сделать это следующим образом:

int age = 20;

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

Пусть нужно объявить переменную-указатель, которая не содержит возраст, а указывает на age , переменную, где находятся нужные данные. Для объявления указателя на переменную age нужно сделать следующее:

int * p _ age ;

В этой строке резервируется место для переменной с именем p_age . Однако это не обычная целочисленная переменная. Так как перед ней стоит *, Си определит, что это переменная-указатель.

Присваивание значений указателям.

Указатель может содержать адреса значений только соответствующего ему типа. Например, p_age может указывать только на целочисленные переменные. Си не инициализирует указатели при их объявлении. Если age объявлена как показано выше, и нужно, чтобы p_age содержала адрес age , нужно присвоить его переменной p_age :

p _ age =& age ;

Вместо занесения адреса переменной age в переменную p_age при помощи оператора присваивания можно одновременно объявлять и инициализировать указатели.

int age=20;

int *p_age=&age;

Можно присваивать различные значения переменной age следующим оператором:

age=35;

Либо можно сделать то же самое другим путем:

*p_age=35;

Эта строка подразумевает "взять ячейку памяти, на которую указывает p_age и занести туда значение 35".

Объявление массивов указателей.

Если нужно зарезервировать большое количество указателей для различных данных, можно объявить массив указателей, причем каждый его элемент будет являться указателем одного и того же указанного типа. Следующий пример резервирует массив из 10 указателей на переменную целого типа:

int *iptr[10];

Можно присвоить адрес любому элементу из iptr таким же образом, как и любому другому указателю, не входящему в массив:


iptr[4]=&age;

В следующей строке резервируется массив из 20 указателей на переменные символьного типа:

char * cpoint [20];

Задание:

Составить программу для определения максимального элемента одномерного массива. Массив первоначально заполняется нулями, затем данные вводятся с клавиатуры. Заменить нулем все элементы, равные максимальному. Массив задать при помощи указателя. Зарезервировать память под массив при помощи функций динамического распределения памяти.

Программа: определяет максимальный элемент одномерного массива:

#include<stdio.h>

К-во Просмотров: 236
Бесплатно скачать Лабораторная работа: Управляющие структуры языка "Си". Программирование с использованием указателей