11. Указатели

• Дефиниране на указател
• Действия с указатели
• Указатели и масиви
• Указатели и низове
• Указатели и структури
• Примери и задачи

преди план следва
 
 

• Указатели и структури


Достъпът до елементите на структурата може да се извърши чрез оператора точка/./, описан в глава 10. Обръщането към елементите на структурата може да стане още и чрез използване на указатели. За целта е необходимо адресът на променливата от тип структура да се присвои на указател, дефиниран да сочи към същия тип структура. Използва се адресната операция &. Достъпът до полетата на структурата се осъществявя чрез т.н. указателна операция ->/ знак минус, следван от знака по-голямо /.

• Примери и задачи

1. Да се дефинира тип структура Time и променлива от типа t1. Да се въведе време в секунди и се изведе същото време, превърнато в часове, минути и секунди. Да се демонстрира достъп до полетата на структурата чрез указател и указателна операция.
#include < iostream.h >
int main(){
typedef   struct
	  {  long  hours;
	     long  min;
	     long  sec;
	  }Time;
Time t1;
Time *p;
p=& t1;
long  secTime;
cout<<"Въведете време в секунди: " ;
cin>> secTime;
p->hours = secTime / 3600;
p->min    = secTime % 3600 / 60;
p->sec     = secTime % 3600 % 60;
cout<<"Въведено е :"<< secTime <<" секунди "<< endl;
cout<< secTime <<" секунди са равни на  ";
cout<< p->hours<<" часа, "<< p->min<<" минути и  "<<  p->sec<<" секунди";
return 0;
}
2. Да се дефинира масив с елементи от тип структура. Структурата да съдържа елементите име, факултетен номер, специалност и успех. Да се въведат данните в масива. Да се осъществи достъп до елементите на структурата чрез указател и указателна операция.
#include < iostream.h >
int main()
{
int n;
 struct stud
{
	char   name[30];
	char   facNumber[12];
	char   specialnost[20];
	float  uspeh;
};
stud student[50];
stud *q;
q=student;
cout<<" Въведете брой на студентите, n <=50 ";
cin>>n;
for(int i=0;i < n;i++)
{
	cout<<"Въведете ime :";
	cin>> q->name;
	cout<<"Въведете facNumber :";
	cin>> q->facNumber;
	cout<<"Въведете specialnost :";
	cin>> q->specialnost;
	cout<<"Въведете uspeh :";
	cin>> q->uspeh;
	q++;
}
q=student;
cout<<"Въведени са следните данни:"<< endl;
for( i=0;i < n;i++)
{
	cout<< q->name<< endl;
	cout<< q->facNumber<< endl;
	cout<< q->specialnost<< endl;
	cout<< q->uspeh<< endl<< endl;
   q++;
}
return 0;
}
3. Да се състави програма за въвеждане на данни за студенти, съдържащи име, факултетен номер, специалност и среден успех . Данните да се въведат в масив с елементи от тип структура. Да се изчисли средният успех на студентите. Да се направи сортиране и извеждане на данните за студентите по успех в низходящ ред. Да се осъществи достъп до елементите на структурата чрез указател и указателна операция.
 
 
 
 
преди план следва