Пример работы со структурами

Транспонирование матрицы

Указатель как результат функции

Использование указателей

Gcc —o two_file_proj two_f_pr1.o two_f_pr2.o

Пример двухфайлового проекта

Gcc one_file_projeckt.c

Пример однофайлового проекта

Примеры программ

#include <stdio.h>

main()

{

int i=1, j=2, k, l:

k = f1(i):

l = f2(j);

f3(k, l);

}

int f1(int a)

{ return (a*10) }

int f2(int a)

{ return (a*20) }

int f3(int a, int b)

{ printf(“Result = %d \n”, a+b) }

Компиляция в Unix-подобной среде (в исполняемый файл с предопределенным именем a.out

Запуск на выполнение./a.out

Результат выполнения Result = 50

Файлы two_f_pr1.c и two_f_pr2.c

Файл two_f_pr1.c main() { int i=1, j=2, k, l; k = f1(i); l = f2(j); f3(k, l); } int f1(int a) { return (a*10) } Файл two_f_pr2.c int f2(int a) { return (a*20) } int f3(int a, int b) #include <stdio.h> { printf(“Result = %d \n”, a+b) }

Компиляция в объектные файлы two_f_pr1.o и two_f_pr2.o

gcc —c two_f_pr1.c

gcc —c two_f_pr2.c

Сборка объектных файлов two_f_pr1.o и two_f_pr2.o в исполняемый two_file_proj

Запуск на выполнение./two_file_proj

Результат выполнения Result = 50

#include <stdio.h>

main()

{

int a=1, b=2, *px,*py; // a,b — целые, px, py - адреса целых переменных

printf("a= %d b=%d \n",a,b);

px=&a; // адрес px теперь указывает на данное а

py=px+1; // адрес py — это адрес целого данного, следующего в памяти

// за данным, адресуемым px

printf("*px= %d *py= %d px= %x py= %x\n",*px,*py, px, py);

/*на терминал выводятся данные, адресуемые указателями px и py, а также значения самих указателей в шестнадцатеричном виде */

}

Вывод на терминал результата выполнения имеет вид:

a= 1 b=2

*px= 1 *py= 2 px= bfa69560 py= bfa69564

Вопрос: какова длина данного int — типа для аппаратной платформы, на которой выполнен этот пример, как это можно определить?

#include <stdio.h>

#include <stdlib.h> // этот заголовочный файл необходим для выделения памяти для

// величины, адресуемой указателем

main()

{

int a, b, c,d, summa,*px,*py;

int *f(int a1, int a2); // прототип —описание функции

a=1;b=2;c=3;d=4;

px=f(a,b);

py=f(c,d);

printf("summa= %d \n",*px+ *py);

}

int *f(int a,int b)

{

int *s;

s=malloc(sizeof(int)); /* выделение памяти для величины, адресуемой s */

printf("a= %d b=%d \n",a,b);

*s=a+b;

return(s);

}

Результат выполнения выводится на терминал в виде

a= 1 b=2

a= 3 b=4

summa= 10

Пример демонстрирует транспонирование матрицы А(i,j), i, j =1..n в матрицу B, B(j,i) = A(i, j)

1 2 3 1 4 7

A 4 5 6 B 2 5 8

7 8 9 3 6 9

#include <stdio.h>

main()

{

int i,j;

int a[3][3]={1, 2, 3, 4, 5, 6,7,8,9}, b[3][3],*pa;

pa=a; // указателю присвоен адрес массива a

for (i=0; i<=2; i++)

for(j=0; j<=2; j++)

b[j][i] = *(pa +3*i + j);

for (i=0; i<=2; i++)

{

for(j=0; j<=2; j++)

printf (" %d ", b[i][j]);

printf ("\n");

}

}

Пример содержит описание данных о гипотетическом человеке, включающее фамилию, рост, вес и примечания, приведены описание структуры, создание переменной и ее инициализация, а также вывод отдельных полей структуры.

#include <stdio.h>

main()

{

struct INFO

{ char fio[20];

int rost;

float ves;

char comment[40];

};

struct INFO man = { “Иванов”, 182, 82.5, “no comment” };

printf("FIO= %s \n ROST=%d \n VES= %f\n COMMENT= %s \n",

man.fio, man.rost, man.ves, man.comment);

printf("First letter in fio is %c \n",man.fio[0]);

}

Выдача результата на терминал имеет вид

FIO= Иванов

ROST=182

VES= 82.500000

COMMENT= No comment


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow