Поля бит в структурах.
Для целых чисел допускается использовать область памяти меньше байта:
struct {
int c1:4; -8<c1<7
int c2:12 -2 <c2<2 -1
} ab;
ab.c1 будет преобразовано в целый тип, затем будет использоваться. На преобразование тратится время и память. Рекомендуется использовать для беззнаковых типов данных и в крайних случаях.
/* Пример использования структур */
#include <stdio.h>
#include <string.h>
#include <math.h>
typedef struct {
char name[21];
int number;
float price;
} GOODS;
void in_goods ( GOODS gs[], int *n );
int in_goods1 ( GOODS *g );
void out_goods ( GOODS gs[], int n );
void sort_goods ( GOODS gs[], int n);
void main( void )
{
int n; GOODS goods[100];
in_goods ( goods, &n );
sort_goods ( goods, n );
out_goods ( goods, n );
{ float f=0; sin(f); }
}
void in_goods( GOODS gs[], int *n)
{
printf("Введите характеристики товаров в виде:\n" \
"наименование количество цена\n" \
"-----окончание ввода \"end\"-------\n");
*n=0;
while( in_goods1(&gs[*n]) ) (*n)++;
}
int in_goods1( GOODS *g )
{
scanf( "%s", g->name );
if ( strcmp(g->name, "end")==0 ) return 0;
scanf( "%d%f", &g->number, &g->price );
return 1;
}
void out_goods( GOODS gs[], int n )
{
int i;
printf("*----------------------------------*\n");
printf("| Наименование | Кол-во | Цена |\n");
printf("|---------------|--------|--------|\n");
for( i=0; i<n; i++)
printf( "| %20s | %6d | %10.2f |\n",
gs[i].name, gs[i].number, gs[i].price );
printf("*-------------------------------*\n");
}
void sort_goods( GOODS gs[], int n )
{
int i, j, GOODS r;
for (i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if( gs[i].price )
{ r=gs[j]; gs[j]=gs[i]; gs[i]=r; }
}
Дата добавления: 2014-12-18; просмотров: 591;