Присваивание структур
Для переменных одного и того же структурного типа определена операция присваивания. При этом происходит поэлементное копирование.
Student t=s;
Информация, содержащаяся в одной структуре, может быть присвоена другой структуре того же типа с помощью одиночного оператора присваивания, то есть не нужно присваивать значение каждого члена по отдельности.
Например:
#include <stdio.h>
void main(){
struct {
int a;
int b;
} x, y;
x.a = 10;
x.b = 20;
y = x;
printf("Содержимое y: %d %d", y.a, y.b);
}
Доступ к элементам структур (полям данных)
С помощью операций прямого и косвенного выбора (соответственно символы точка '.' и '->') организуется доступ к элементам структур. Первая операция используется со структурными объектами, а вторая – при наличии указателя на структурный объект.
Операция прямого доступа к элементам структуры ('.') – результатом является значение элемента структуры.
Синтаксис операции прямого доступа к элементам структуры:
ИмяСтруктуры.ИмяЭлементаСтруктуры
Данная операция используется для доступа к элементу структуры с тем, чтобы присвоить ему значение, напечатать его, использовать его значение в арифметической операции и т.д. Эта операция является первичной и находится в самой верхней строке таблицы приоритетов операций языка С++.
Именем структуры можно пользоваться сразу же после его появления в программе.
Например:
employee.name – массив типа char, содержащий значение «Петров»
employee.rate – переменная типа float со значением 58000.0
Если в программе определены две структуры с одинаковыми типами элементов, то для компилятора типы таких структур различны. В этом случае взаимное присваивание можно выполнять лишь на уровне элементов структур. Если объекты принадлежат к одному структурному типу, то возможно косвенное присваивание структур путём присваивания значений одного структурного объекта другому.
Например:
struct A {
int j;
char titl[10];
char x;
} Аа, Аb = {128,"Мир",'Q'};
Здесь допустимы операторы присваивания вида Аа=Аb;. В этом случае элементы структурного объекта Аа будут иметь значения, совпадающие со значениями соответствующих элементов объекта Аb.
Пример 1.
//Инициализация структуры и вывод значений ее элементов
#include<stdio.h>
void main() {
struct goods {
char* name;
long price;
float percent;
int vol;
char date[9];
};
struct goods coat={"пиджак черный",4000,7.5,220,"12.01.09"};
printf("\n Товар на складе:");
printf("\n Наименование: %s.", coat.name);
printf("\n Оптовая цена: %ld руб.", coat.price);
printf("\n Наценка: %3.1f %%.", coat.percent);
printf("\n Цена товара: %ld руб.",
(long)(coat.price*(1.0+coat.percent/100)));
printf("\n Объем партии: %d штук.", coat.vol);
printf("\n Дата поставки: %s.",coat.date);
}
Пример 2. Сложение комплексных чисел
#include<stdio.h>
typedef struct {
double real;
double imag;
} complex;
void main() {
complex x,y,z;
printf("\n Введите два комплексных числа:");
printf("\n Вещественная часть:");
scanf("%lf", &x.real);
printf("\n Мнимая часть:");
scanf("%lf", &x.imag);
printf("\n Вещественная часть:");
scanf("%lf", &y.real);
printf("\n Мнимая часть:");
scanf("%lf", &y.imag);
z.real=x.real+y.real;
z.imag=x.imag+y.imag;
printf("\n Результат: z.real=%f z.imag=%f", z.real,z.imag);
}
Дата добавления: 2015-02-16; просмотров: 1486;