Программирование >>  Элементы языков с и с++ 

1 ... 41 42 43 [ 44 ] 45 46 47 ... 200


,1/-

int tmain (int argc, char* argv[])

определена no умолчанию (приведена для примера)

struct ааа {

public: int i;

int f(int a) функция-член структуры

( объявлена прямо в структуре

return (-а) , }; }bbb; int а;

a=bbb.f(15); printf( a=%d\n ,а); getch();

сл C:\W(NDOWS\system32\cmd.exe

a =-15

Для продолжения нажиите любую клавишу

Рис. 7.6. Результат работы программы из листинга 7.6

П в языке С внешнюю или статическую структуру можно инициализировать. Например, имеем шаблон:

struct date {

int day; день недели int month; номер месяца int year; год

char monthname[4]; название месяца };

В этом случае можем инициализировать структуру:

struct date dl={4,5,2003,sept};



Инициализация массива структур будет задаваться так:

struct а {char *s; int i;}m[3]={ ul ,О, u2 ,0,

u3 ,0 (

□ присваивать значения одной структуры другой разрешено только для экземпляров одной структуры. Например, существует структура:

struct А {int i; char d}a,al; и struct B{int i; char d}b;

В этом случае можно выполнить a = ai; или ai = а;. Но операцию a=b; выполнить нельзя, т. к. а и ь считаются относящимися к шаблонам разного типа (у их шаблонов разные имена и этого достаточно, чтобы считать их разными, хотя по структуре они совпадают).

Структуры И функции

функция может возвращать структуру или указатель на структуру. Например, если объявить структуру mystruct fund (void);, то функция fund О возвратит структуру. Для структуры mystruct *func2(void); функция func2 () возвратит указатель на структуру. Структура может передаваться в качестве аргумента функции следующими способами:

□ непосредственно: void fund (mystruct s);

□ через указатель: void func2(mystruct *sptr);

□ в языке С++ через ссылку: void func3(mystruct &sref);

Чем отличаются понятия ссылка и указатель ? Ссылка - это непосредственно адрес, а указатель - переменная, содержащая адрес (подобное различие существует между константой и переменной).

Программы со структурами

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



(Листинг 7.7

II 27.срр : Defines the entry point for the console application,

linclude stdafx.h

linclude <stdio.h> 11 tor getchar (), putchar ()

linclude <conio.h>

linclude <stdlib.h> for atoi()

linclude <string.h>

linclude <malloc.h> for raallocO

Idefine eof -1

Idefine maxline 1000

-------Ввод строки с клавиатуры

int getiine (char s [), int lim) {

int c,i;

for(i=0; i<lim-l && (c=getchar()) != eof && с != \n; i++) s[i]=c; s[i]=\0;

i++; для учета количества return(i) ;

-----------------------------------------

struct Jcey (

char *keyword; int Iceycount; )tab[] = { break ,0, case ,0.

Функция возвращает структуру

В листинге 7.7 приведен пример программы, в которой функция возвращает структуру.



1 ... 41 42 43 [ 44 ] 45 46 47 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика