Турбо С: руководство пользователя. Часть 1

Турбо С: руководство пользователя. Часть 1 - Стр. 61

Печать PDF
Индекс материала
Турбо С: руководство пользователя. Часть 1
Стр. 2
Стр. 3
Стр. 4
Стр. 5
Стр. 6
Стр. 7
Стр. 8
Стр. 9
Стр. 10
Стр. 11
Стр. 12
Стр. 13
Стр. 14
Стр. 15
Стр. 16
Стр. 17
Стр. 18
Стр. 19
Стр. 20
Стр. 21
Стр. 22
Стр. 23
Стр. 24
Стр. 25
Стр. 26
Стр. 27
Стр. 28
Стр. 29
Стр. 30
Стр. 31
Стр. 32
Стр. 33
Стр. 34
Стр. 35
Стр. 36
Стр. 37
Стр. 38
Стр. 39
Стр. 40
Стр. 41
Стр. 42
Стр. 43
Стр. 44
Стр. 45
Стр. 46
Стр. 47
Стр. 48
Стр. 49
Стр. 50
Стр. 51
Стр. 52
Стр. 53
Стр. 54
Стр. 55
Стр. 56
Стр. 57
Стр. 58
Стр. 59
Стр. 60
Стр. 61
Стр. 62
Стр. 63
Стр. 64
Стр. 65
Стр. 66
Стр. 67
Стр. 68
Стр. 69
Все страницы
     вы, и они описываются именно так, как вы себе и представляли:              
                                                                                
                   type name[size1][size2]...[sizeN]                            
                (тип имя [размер1][размер2]...[размерN])                        
                                                                                
          Рассморим следующую программу,  которая определяет два  дву-          
     мерных массива, а затем выполняет их матричное умножение:                  
                                                                                
                  main()                                                        
                  {                                                             
                     int a[3][4] = {{ 5,  3, -21, 42},                          
                                    {44, 15,   0,  6},                          
                                    {97 , 6,  81,  2}};                         
                     int b[4][2] = {{22,   7},                                  
                                    {97, -53},                                  
                                    {45,   0},                                  
                                    {72,   1} };                                
                     int c[3][2],i,j,k;                                         
                                                                                
                     for (i=0; i
                                                                                
          Программа, обращающаяся к функции imin, может выглядеть так:          
                                                                                
             main()                                                             
             {                                                                  
                #define VSIZE 22                                                
                int i,vector[VSIZE];                                            
                                                                                
                for (i = 0; i < VSIZE; i++) {                                   
                    vector[i] = rand();                                         
                    printf("vector[%2d] = %6d\n",i,vector[i]);                  
                }                                                               
                i = imin(vector,VSIZE);                                         
                printf("minimum: vector[%2d] = %6d\n",i,vector[i]);             
             }                                                                  
                                                                                
          Может возникнуть вопрос:  что именно передается в  imin?   В          
     функцию imin передается начальный адрес массива vector. Это озна-          
     чает, что если вы производите какие-либо изменения массива list в          
     imin то,    те же изменения будут произведены и в массиве vector.          
     Например, вы можете написать следующую функцию :                           
                                                                                
                                                                                
             void setrand(int list[],int size);                                 
             {                                                                  
                int i;                                                          
                for (i = 0; i < size; i++) list[i] = rand();                    
             }                                                                  
                                                                                
          Теперь для инициализации массива vector вы можете написать в          
     main setrand(vector,VSIZE).  Следует заметить, что массиву vector          
     будут присвыоены некие случайные числа,   являющиеся  результатом          
     работы датчика   случайных чисел,  эмулируемого функцией Турбо Си          
     rand().                                                                    
                                                                                
          А как передавать многомерный массив?  Имеется ли такая  воз-          
     можность? Предположим, вы хотите модифицировать setrand для рабо-          
     ты с двумерным массивом. Вы должны написать приблизительно следу-          
     ющее:                                                                      
                                                                                
             void setrand(int matrix[][CSIZE],int rsize)                        
             {                                                                  
                int i,j;                                                        
                for (i = 0; i < rsize; i++) {                                   

                         - 507,508 -
                                                                                
                    for (j = 0; j < CSIZE; i++)                                 
                        matrix[i][j] = rand();                                  
                }                                                               
             }                                                                  
                                                                                
          Где CSIZE - это глобальная константа,   определяющая  второе          
     измерение массива.  Другими словами,  любой массив,  передаваемый          
     setrand получит второе измерение массива, равный CSIZE.                    
                                                                                
          Однако, есть еще одно решение.  Предположим, у вас есть мас-          
     сив matrix[15,7],  который вы хотите передать в setrand.  Если вы          
     используете следующее описание:                                            
                                                                                
                        setrand(int list[],int size)                            
                                                                                
     обращение к функции будет иметь вид:                                       
                                                                                
                           setrand(matrix,15*7);                                
                                                                                
          Массив matrix будет рассматриваться функцией setrand как од-          
     номерный массив,    содержащий 105 элементов (15 строк * 7 столб-          
     цов), с которым будут произведены необходимые вам действия.                
                                                                                
     Структуры                                                                  
     -----------------------------------------------------------------          
                                                                                
          Массивы и указатели позволяют вам создавать список элементов          
     одного типа. А что, если вы хотите создать нечто, содержащее эле-          
     менты различного типа? Для этого используются СТРУКТУРЫ.                   
                                                                                
          Структура - это конгломерат элементов различного типа.   До-          
     пустим, вы хотите сохранить информацию о звезде:  ее имя,  спект-          
     ральный класс, координаты и прочее. Вы можете описать это следую-          
     щим образом:                                                               
                                                                                
                  typedef struct {                                              
                     char   name[25];                                           
                     char   class;                                              
                     short  subclass;                                           
                     float  decl,RA,dist;                                       
                  } star ;                                                      
                                                                                
          Здесь определена структура (struct)  типа star. Сделав такое          
     описание в  начале своей програмы,  вы можете дальше использовать          
     этот определенный вами тип данных:                                         

                         - 509,510 -
                                                                                
                                                                                
                                                                                
                  main()                                                        
                  {                                                             
                     star mystar;                                               
                                                                                
                     strcpy(mystar.name,"Эпсилон Лебедя");                      
                     mystar.class    = 'N';