Лабораторная работа: Работа с функциями в языке программирования Си
Рассмотрим особенности работы функции с двумерным массивом. В предыдущем примере в функции массив был описан как int s[]; для двумерного массива а нельзя записать a[][]. В описании двумерного массива во второй квадратной скобке должно быть указано количество столбцов, например: a[][3].
Пример 5. Увеличить все элементы массива а(5,5) в два раза. Оформить этот алгоритм в виде подпрограммы.
#include <stdio.h>
main()
{int a[5][5]; /*описаниемассива a*/
int i,j; /*объявление переменных i,j*/
for (i=0;i<5;i++)
for (j=0; j<5; j++)
scanf("%d",a[i][j]); /*вводмассива*/
mas(a); /*обращение к функции mas*/
for (i=0; i<5; i++)
for (j=0; j<5; j++)
printf("%d", a[i][j]); /*вывод полученного результата*/
}
/*функция*/
mas(a)
int a[][5]; /*описание массива а*/
{int i,j; /*описание переменных i,j*/
for (i=0; i<5; i++)
for (j=0; j<5; j++)
a[i][j] = 2*a[i][j]; /*увеличение элементов массива в 2 раза*/
}
Классы памяти
В языке СИ различают четыре основных памяти: внешнюю (глобальную), автоматическую (локальную), статическую и регистровую.
Внешние переменные определены вне любой из функций, следовательно, доступны для многих из них. Область внешней переменной простирается от точки во входном файле, где она объявлена, и до конца файла. Если внешняя переменная определена в другом файле, то вступает в силу описание extern (внешний). На рис.1 показано, где объявляются и на что распространяется область действия внешних переменных, если программа main и вызываемая функция находятся в данном файле. На рис. 2 демонстрируются отличия, имеющие место, когда main и вызываемая функция находятся в разных файлах. В файле с вызываемой функцией внешние переменные будут доступны после их описания с помощью ключевого слова extern.
Пример 5. Оформить в виде функции вычисление выражения:
f=a×x2 +b×x+c;
В приведенной ниже программе заданные переменные объявлены как внешние, причем основная программа и функция находятся в одном файле.