
- •Додатковий матеріал до лекцій із дисципліни "Програмування"
- •1 Структури та об’єднання
- •1.1 Структури
- •1.2 Об’єднання та бітові поля
- •2 Функції
- •2.1 Передача параметрів за значенням
- •2.2 Передача параметрів за покажчиком
- •2.3 Функції та масиви
- •2.4 Функції з параметрами за замовченням
- •2.5 Функції з змінним числом параметрів
- •2.6 Передача параметрів в функцію main()
- •2.7 Рекурсивні та інлайн-функції
- •2.8 Функції, що повертають покажчик
- •2.9 Функції та структури
- •2.10 Перевантаження функцій та шаблони функцій
- •2.11 Покажчик на функцію
- •3 Робота з файлами
- •3.1 Відкриття та закриття файлів
- •3.2 Введення даних в файл та виведення даних з файлу
- •3.3 Керування файлами та каталогами
- •4 Багатофайлова компіляція
- •Література
2.2 Передача параметрів за покажчиком
Приклад 2.5
#include <stdio.h> |
void swap(int *a, int *b) |
{printf("&a=%p a=%p *a=%d\n",&a,a,*a); |
printf("&b=%p b=%p *b=%d\n",&b,b,*b); |
int tmp=*a; |
*a=*b; *b=tmp; |
printf("*a_n=%d *b_n=%d\n",*a,*b);} |
void main() |
{int i=5,j=60; |
printf("&i=%p i=%d\n &j=%p j=%d\n",&i,i,&j,j); |
swap(&i,&j); |
printf("i=%d j=%d\n",i,j);} |
|
|
|
|
|
2.3 Функції та масиви
Приклад 2.6
#include <stdio.h> |
void func1(int arr[]) |
{printf("&arr=%p arr=%p\n",&arr,arr); |
printf("arr[0]=%d %p\n",arr[0],&arr[0]); |
printf("arr[1]=%d %p\n",arr[1],&arr[1]); |
arr[0]+=10; arr[1]-=5; |
printf("arr[0]=%d arr[1]=%d\n", *arr, *(arr+1));} |
void main() |
{int mass[]={5,8,7,1,4}; |
printf("&mass=%p mass=%p\n", &mass,mass); |
printf("mass[0]=%d %p\n", mass[0],&mass[0]); |
printf("mass[1]=%d %p\n", mass[1],&mass[1]); |
func1(mass); |
printf("mass[0]=%d mass[1]=%d\n",mass[0],mass[1]);} |
|
|
|
|
|
|
Приклад 2.7
#include <stdio.h> |
int sum(int N,int x[]) |
{int summa=0; |
for(int i=0;i<N;i++) |
summa=summa+x[i]; |
return summa;} |
void main() |
{int a[5]={1,3,5,10,2},c[3]={2,1,6},res1,res2; |
res1=sum(5,a); res2=sum(3,c); |
printf("сумма эл-ов массива a=%d\n",res1); } |
printf("сумма эл-ов массива c=%d\n",res2); |
|
|
Приклад 2.8
#include <stdio.h> |
#define term 999 |
int max_arr(int x[]) |
{int max=x[0],i=0; |
while(x[i]!=term) |
{if(x[i]>max) max=x[i]; |
i++;} |
return max;} |
void main() |
{int a[]={1,32,5,45,2,999},M1; |
int c[]={24,1,60,999},M2; |
M1=max_arr(a); |
M2=max_arr(c); |
printf("Мах в массиве a=%d\n",M1); |
printf("Мах в массиве c=%d\n",M2);} |
|
|
Приклад 2.9
#include <stdio.h> |
int len(char *); |
void main() |
{char *name="TERMINATOR"; |
printf("Длина 1-ой строки=%d",len(name)); |
char *str="Высшая математика"; |
printf("Длина 2-ой строки=%d",len(str)); } |
int len(char *c) |
{int i=0; |
while(c[i++]); |
return i-1; } |
|
|
Приклад 2.10
#include <stdio.h> |
void exch(int, int[]); |
void main() |
{const L=5; int a[L]={1,3,5,8,2}; |
printf("Масив до зміни: "); |
for(int i=0;i<L;i++) |
printf(" %d ",a[i]); |
exch(L,a); |
printf("\nМасив після зміни: "); |
for(int i=0;i<L;i++) |
printf(" %d ",a[i]);} |
void exch(int N,int x[]) |
{for(int i=0;i<N;i++) x[i]*=x[i];} |
|
|
|
|