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

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

Печать 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
Все страницы
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
     Пропуск break в операторе switch                                           
     ----------------------------------------------------------------           
                                                                                
                                                                                
          Как вы  помните,   оператор  break  используется в операторе          
     switch в конце каждой помеченной альтернативы выбора. Пожалуйста,          
     не забывайте это. Если вы забудете поставить break в данную поме-          
     ченную альтернативу выбора,  то операторы  следующих  альтернатив          
     выбора, помеченных за ней, будут также выполняться.                        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 561,562 -
                                                                                
               Индексы массивов                                                 
     -----------------------------------------------------------------          
                                                                                
          Не забудьте, что индекс массива начинается с элемента [0], а          
     не с элемента [1].  Наиболее распространенная ошибка  может  быть          
     проиллюстрирована на примере следующей программы:                          
                                                                                
               main()                                                           
               {                                                                
                   int list[100],i;                                             
                                                                                
                   for (i = 1; i 
                                                                                
                   printf("Введите два значения:");                             
                   scanf("%d %d",a,b);                                          
                   sum = a + b;                                                 
                   printf("Сумма значений равна: %d\n",sum0;                    
               }                                                                
                                                                                
          Нашли? Ошибка в операторе                                             
                                                                                
                         scanf("%d %d",a,b);                                    
                                                                                
          Вспомните, что  scanf требует от вас передачи адресов,  а не          
     значений!                                                                  
                                                                                
                                                                                
          То же самое относится к любым функциям, содержащим в качест-          
     ве формальных параметров указатели.  Программа,  написанная выше,          
     оттранслируется и выполнится,  но при этом scanf возьмет какие-то          
     случайные значения  (мусор),  находящиеся в a и b и использует их          
     как адреса, по которым будут записаны введенные вами значения.             
                                                                                
          Правильно этот оператор необходимо записать так:                      
                                                                                
                        scanf("%d %d", &a, &b);                                 
                                                                                
          Здесь функции scanf передаются адреса a и  b,   и  введенные          
     значения правильно  запоминаются в этих переменных по их адресам.          
                                                                                
          Та же  неприятность  может случиться с вашей собственноручно          
     написанной функцией.  Помните функцию swap, которую мы определили          
     в параграфе об указателях?                                                 
                                                                                
          Что произойдет, если вы вызовете ее следующим образом:                
                                                                                
               main()                                                           
               {                                                                

                         - 565,566 -
                                                                                
                   int i,j;                                                     
                                                                                
                   i = 421;                                                     
                   j = 53;                                                      
                   printf("До обработки: i = %fd j = %fd\n",i,j);               
                   swap(i,j);                                                   
                   printf("После обработки: i = %fd j = %fd\n",i,j);            
               }                                                                
                                                                                
          Переменные i и j будут иметь одни и те же значения  как  до,          
     так и   после их обработки путем обращения к функции swap; однако          
     значения адресов чисел 421 и 53 будут переставлены,  что  породит          
     некоторые хитрые и труднообнаружимые ошибки.  Как избежать этого?          
                                                                                
          Пользуйтесь  прототипами  функций   и  полными определениями          
     функций.                                                                   
                                                                                
          И действительно,  вы получили бы ошибку при выполнении main,          
     если бы swap была описана так, как в этой главе. Если же вы опре-          
     делите ее таким образом,  как представлено  далее,  то  программа          
     выполнится без ошибок:                                                     
                                                                                
                                                                                
                                                                                
               void swap(a,b)                                                   
               int *a,*b;                                                       
               {                                                                
                  ...                                                           
               }                                                                
                                                                                
          Вынесение описания  переменных  a  и  b  из скобок отключает          
     контроль над ошибками, проводимый в противном случае; это являет-          
     ся лучшим доводом в пользу того, чтобы не использовать классичес-          
     кий стиль при определении функции.                                         
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 567,568 -
                                                                                
                                                                                
               В добрый путь                                                    
     ----------------------------------------------------------------           
                                                                                
          Как и говорилось в начале предыдудущей главы,  мы  не  можем          
     дать вам   полное представление о Си только в двух главах.  Но мы          
     предложили вам оптимальный вариант знакомства с этим языком прог-          
     раммирования. Что   вам теперь делать дальше - ответ в предостав-          
     ленных вам примерах программ: компилируйте их, выполняйте, и (что          
     более важно)    модифицируйте  их  для того,  чтобы понять что же          
     все-таки произойдет, если вы что-нибудь измените в программе.              
                                                                                
               Удачи вам, счастливого пути в познании тайн                      
                       программирования на Си!