русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Указатели на структуры


Дата добавления: 2013-12-23; просмотров: 802; Нарушение авторских прав


Структуры

Сложение элемента массива с помощью указателя

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

Для определения адрес второго элемента массива необходимо определить смещение, что осуществляется с помощью операции sizeof(тип) (sizeof(int)).

Смещением к i-тому элементу осуществляется по формуле i*sizeof(тип).

Таким образом адрес i-того элемента массива определяется по формуле p+i*sizeof(int).

*sizeof(int) – данную операцию СИ-компилятору можно не указывать, поэтому адрес i-того элемента массива определяется по формуле. Где «p» – указатель, содержащий базовый адрес (начало размещения массива в памяти); - номер элемента массива. p+i – взять значение по адресу.

#include<iostream.h>

#include<conio.h>

Int main ()

{ int a[3]; int *p; p=a;

For (int i=0; i<2; i++) {

Cout<<”a[“<<i<<”]”;

Cin>>*(p+i);

Int sum=0;

Sum+=*(p+i);

Cout<<”\n sum is: “<<sum;

Getch ();

Return 0;

}

Структуры – составной объект, который входит элементы любых типов, за исключением функций.

Структура определяется следующим образом:

Struct[<тег>]{<список перечислений>}[<список описателей>]

<Тег> – имя структуры

<Список перечислений> – список переменных

<Список описателей> – список переменных – структур.

Например: struct student{char fam[30]; int grp; int age;};

Struct{double x,y} s1,s2,s[9];

Struct{int year; char mouth, day} date1, date2;

Тег структуры используется для последующего объявления экземпляров структур. Это осуществляется следующим образом:

<Тег структуры> описатель

Struct student{char fam[30]; int grp;};

Student st1,st2;

Struct {int x,y} s2;

Student st[20];

 

Доступ к компонентам структуры осуществляется с помощью указания имени экземпляра структуры и следующего через точку имени компонента структуры, например:



1) struct point {int x,y;};

point t1, t2;

T1.x=2;

T1.y=3;

T2.x=4;

T2.y=5;

2) struct student{char fam[30]; int grp;};

student st1,st2;

st1.fam=”Иванов”

st1.grp=103;

st2.fam=”Петров”

st2.grp=103;

 

char a[7]=”Иванов”

strcpy(st1.fam,”Иванов”);

 

#include <iostream.h>

#include <conio.h>

Int main()

{ struct student{char fam[30]; int grp;};

For (int i=0; i<9; i++)

{

Cout<<”Введите фамилию студента”;

Cin>>st[i].fam;

Cout<<”\in Введите номер группы”;

Cin>>st[i].grp;

}

For (i=0; i<9; i++)

{

Cout<<endl<<st[i].fam<<”_”<<st[i].grp;

}

Getch();

Return 0;

}

\t – столбиком (табуляция)

Пример1:

Int (2 байта)

Int x;

Int *p;

P=x;

 

Пример2:

Student st1, st2, st3;

St1.fam=”Иванов”

P+i*sizeof(int)

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

Struct student {char fam[30]; int grp;}

Student st1, st2;

Student st1;

Student *p;

P=st1;

//p->fam=”Иванов”; p->grp=201

 

Пример3:

Struct st1[25]; //объявление массива структур

Student *p;

P=st;

//32*25

Sizeof(Fam)=sizeof(grp)=Sizeof(student);

Sizeof(student)+ Sizeof(student)=2* Sizeof(student) //адрес 2го элемента структур

 

…*sizeof(student) //Адрес i-го элемента массива структур

Адрес элемента структур определяется формулой p+i*sizeof(student)

В СИ-компиляторе данную операцию можно не указывать, поэтому адрес i-го элемента массива структур равен p+i.

*(p+i) – взять значение по адресу

Задача:

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

#...

Int main()

{ struct point {x,y}; point t1,t2; Point *p1, *p2; double c;

P1=t1; p2=t2;

Cout<<”Введите x1. y1, y1, y2: \n“<<;

Cin>>x1>>x2>>y1>>y2;

//T1.x1=2;

//T2.x2=3;

//T1.y1=4;

//T2.y2=5;

Cin<<p1->x1>>p2->y1>>p2->x2

A=(p2->x)-(p1-x);

B=(p2->y)-(p1->y);

C=sqrt(pow(a,2)+pow(b,2));

Cout<<”Длина = “<<c;

Getch();

Return 0;

}

 

Пример 4:

#include <iostream.h>

#include <conio.h>

#include <math.h>

Int main()

{ struct point {x,y}; point t[2]; double c;

Cout<<”Введите координаты: \n“<<;

For (int i=0; i<2; i++) {

Cin>>t[i];}

A=x[0]-x[1];

B=y[0]-y[1]

C=sqrt(pow(a,2)+pow(b,2));

Cout<<”Длина = “<<c;

Getch();

Return 0;

 

Пример 5:

 

Student st[10]; student *p; p=st

Cout<<”Введите данные о студентах \n”;

For (int i=0; i<10; i++) Cin>>(*(p*+i)->fam)>>(*(p=i)->grp);};

For (int i=0; i<10; i++) cout “\n”<<*(p+i)->fam<<”\t”<<*(p+i)-grp;

Getch();

Return 0;

}



<== предыдущая лекция | следующая лекция ==>
Указатели | Занятие11


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.