22935

ВКАЗІВНИКИ

Лекция

Информатика, кибернетика и программирование

1 довжина рядка int strlen char s { int i; for i=0; s= 0; s i; return i; } int strlen char s[] { int i; for i=0; s[i]= 0; i ; return i; } int strlen char s { int i; for i=0; s; s i; s трактується як булевий вираз s=0 означає лжу s=0 означає істину return i; }...

Русский

2013-08-04

53.5 KB

0 чел.

ТЕМА: ВКАЗІВНИКИ

Кожному  типу T відповідає  множина адрес полів ОП, де можуть зберігатись дані типу T. Нпр., типу  char  відповідають адреси окремих байтів ОП, типу int  адреси  2-байтних слів і т.д. Ці адреси складають тип вказівників   на T.  Як правило для подання вказівників використовують 16-ні  безнакові константи: 0X00FF(=255), 0x00FF(=255), 0x7FFF(=32767). Структура  вказівників залежить від архітектури процесора. Як правило,  ОП має сторінкову організацію, тобто розбита на сторінки (сегменти) розміром  байтів, кожна з яких має свій порядковий номер (базу). Адреса поля тоді має структуру пари (база, зсув. У межах фіксованого сегменту  вказують тільки зсув поля відносно його початку: від 0х0000  до  0x7FFF .

Син.         T *p;  /*   зимінна-вказівник  типу  Т */                             

            char *s;  /*   зимінна-вказівник  типу  char */

            char ch;  /*   змінна  типу  Т */

            int  *ip, n=10;  

& - операція взяття адреси змінної: &s, &nадреси змінних s та n.

*- операція розіменування вказівника: *p, *ip – змінна відповідного типу (T та int), що зберігається за адресою(= значенням)  вказівника.

Розіменовані змінні мають ті самі властивості, що і звичайні змінні даного типу. Нпр.,  змінна *ip може використовуватись як звичайна ціла змінна: *ip=0, n=*ip+2,  *ip<0     і т.д.

 

Адресна арифметика:  +, - , <, >, <=, >=,  !=, ++,  --  .

unsigned int k;

 

Пркл. 1 (довжина рядка)

int strlen (char *s)                                                      

{ int i;

  for (i=0; *s!=’\0’; s++)  i++;

  return i;

}

int strlen (char s[])                                                      

{ int i;

  for (i=0; s[i]!=’\0’; i++) ;

  return i;

}

int strlen (char *s)                                                      

{ int i;

  for (i=0; *s; s++)  i++;  /*   *s трактується як булевий вираз  (*s=0 означає лжу, *s!=0 означає істину )   */                                                          

  return i;

}

Табл..  Пріоритети операцій та порядок виконання

Операції

Порядок виконання

() [ ] ->

==>

! ~ ++ -- + _-  * & (тип) sizeof

<==

*  /  %

==>

+  -

==>

<<  >>

==>

<   <=   >   >=

==>

==   !=

==>

&

==>

^

==>

|

===>

&&

==>

||

==>

?:

<===

=  +=  -=  *=  /=  &=  |=  <<=  >>=

<==

,

==>

МАСИВИ ВКАЗІВНИКІВ

Пркл.

int array[10]; /* звичайний масив    */

int *pd[10];  /* масив показчиків   */

int *pd[]={&array[0], &array[2], &array[4]}  /* ініціалізований масив показчиків   */

Пркл. 2 (сортування масиву за зростанням та спаданням )

#define n 6

void main()

{ float array[]= {5.0, 2.0, 1.0, 3.0, 6.0, 4.0};

  float *pmin[n], *pmax[n], *temp;

  int i,j;

  for (i=0; i<n; i++)  pmin[i]=pmax[i]=&array[i];

  for (i=0; i<n-1`; i++)  

  for (j=i+1; j<n; j++)  

           { if (*pmin[i]< *pmin[j])  {temp=pmin[i]; pmin[i]=pmin[j]; pmin[j]=temp;

             if (*pmax[i]> *pmax[j])  {temp=pmax[i]; pmax[i]=pmax[j]; pmax[j]=temp;

           }

   printf(“\n за спаданням: \n”) ;   for (i=0; i<n-1`; i++)  printf(“\t %5.1f”, *pmin[i]);

   printf(“\n за зростанням: \n”);  for (i=0; i<n-1`; i++)  printf(“\t %5.1f”, *pmax[i]);

}

< stdlib.h>

void void malloc(unsigned int n)

Повертає безтиповий (адресу байту) вказівник на поле в динамічній памяті довжиною n  байтів. Якщо вільної такої ділянки не має, то повертає  NULL.

void  calloc(unsigned int n, unsigned int m)

Повертає безтиповий (адресу байту) вказівник на поле в динамічній пам’яті для розміщення масиву з  n елементів по  m  байтів. Якщо вільної такої ділянки не має, то повертає  NULL.

void free (void*p )  

Повертає  поле з адресою p  до вільної зони динамічної памяті

==============================================================================

ДИНАМІЧНІ МАСИВИ

ДМ – послідовності  однотипних елементів  з прямим доступом до компонент.

Пркл. 2 ( Створити  ДМ та роздрукувати його, розпочинаючи  з кінця)

void   main()

{ float *p; /* адреса динамічного  масиву   */

  int i,

       n; /* довжина ДМ   */

  scanf(“%d ”, &n);

  p=(float*) calloc(n, sizeof(float));

  for (i=0; i<n; i++) { printf(“p[%d]=”, i);  scanf(“%f ”, &p[i]);}

  for (i=n-1; i>=0`; i--)  

             printf(“\t p[%d]=%f”, i, p[i]);

             

   free(p);

}

Пркл. 3 (  Динамічна матриця з рядками різної довжини)

void   main()

{ char  *line; /* адреса динамічного  масиву з компонентами – адресами рядків матриці  */

  int i,j, n,m; /* n – кількість рядків матриці */

  scanf(“%d ”, &n);

  line=(char**) calloc(n, sizeof(char));

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

       { scanf(“%d”, &m);  line[i]=(char*) calloc(m, sizeof(char));}

          for (j=0; j<m`; j++) line[i][j]=getchar();

           line[i][j]=’\0’;

        }

       ……     обробка матриці   ……………

    /* вивільнення памяті  */

     for (i=0; i<n; i++)   free(line[i]);

     free(line);

}


 

А также другие работы, которые могут Вас заинтересовать

37564. ОСНОВЫ ФИЛОСОФИИ НАУКИ 2.68 MB
  Фатхи ОСНОВЫФИЛОСОФИИ НАУКИ Учебное пособие для аспирантов OCR: В. К 55 Основы философии науки: Учебное пособие для аспирантов. Основное внимание уделено философскому анализу науки как специфической системы знания формы духовного производства и социального института. Рассмотрены общие закономерности развития науки ее генезис и история структура уровни и методология научного исследования актуальные проблемы философии науки роль науки в жизни человека и общества перспективы ее развития и ряд других проблем.
37565. ФИЛОСОФИЯ. Конспект лекций 383 KB
  Она принадлежит к тому природу чего мы все знаем лишь мысля их сами когда мы уже в философии. Строго говоря философии нельзя научить как нельзя научить поэзии или музыке. В философии как в искусстве свое ремесло навыки приемы что помогает а увидеть проблему там где ее не видят другие б не делать трагедии из факта сосуществования различных способов объяснения мира в терпеливо принимать инакомыслие другого г складно формулировать и выражать свои идеи д отслеживать ясность ума честность...
37566. ФОРМИРОВАНИЕ СПЕЦИАЛИСТА В СИСТЕМЕ СОЦИАЛЬНО-ЭКОНОМИЧЕСКИХ ОТНОШЕНИЙ В ВУЗЕ 496 KB
  ОБЩИЕ ВОПРОСЫ РАЗВИТИЯ ВУЗОВСКОЙ СИСТЕМЫ ОБРАЗОВАНИЯ И УЧАСТИЕ В НЕЙ СТУДЕНТОВ. реформа ВЫСШЕЙ ШКОЛЫ ГЛАЗАМИ СТУДЕНТОВ И ПРЕПОДАВАТЕЛЕЙ. При всем многообразии форм и методов качественной профессиональной подготовки будущих специалистов одно из важнейших мест занимает привлечение студентов к общественному управлению вуза воспитания его активной нравственной позиции и политического сознания....
37567. КОНЦЕПТУАЛЬНЫЕ ОСНОВЫ ФОРМИРОВАНИЯ И ИСПОЛЬЗОВАНИЯ ИНВЕСТИЦИОННЫХ РЕСУРСОВ В ОБОРОННОМ КОМПЛЕКСЕ РОССИИ 588 KB
  Акционирование и приватизация предприятий оборонного комплекса: задачи принципы и результаты [4. Лизинг как форма инвестирования предприятий оборонного комплекса [4.; резкое снижение объемов бюджетного финансирования острая нехватка собственных и других инвестиционных средств; непродуманная и обвальная конверсия; поспешно проведенные акционирование и приватизация предприятий приведшие к разрыву технологических связей и потере мощностей оборонного комплекса;...
37568. Разработка основных биотехнологических процессов производства и системы управления качеством липидных косметических препаратов (на примере тоников для проблемной кожи) 893 KB
  Цель и задачи исследования. Целью данного исследования является разработка биотехнологических процессов конструирования липидных тоников для ухода за воспаленной кожей и системы управления качеством их производства. Для достижения поставленной цели следовало решить следующие задачи: 1.На основе биомоделирования разработать рецептуру липидных тоников для ухода за кожей в домашних и профессиональных условиях...
37569. Методология управления финансами финансово-промышленных групп 1017 KB
  ФПГ как специфическая организационная форма предпринимательской деятельности [2. Современные тенденции создания и функционирования ФПГ за рубежом [2. Анализ российского опыта создания ФПГ. МЕТОДИЧЕСКИЕ ПОДХОДЫ К УПРАВЛЕНИЮ ФИНАНСАМИ ФПГ [3.
37570. МЕТОДОЛОГИЯ СТАТИСТИЧЕСКОГО АНАЛИЗА ФУНКЦИОНИРОВАНИЯ ФИНАНСОВО-ПРОМЫШЛЕННЫХ ГРУПП 610.5 KB
  Цель работы состоит в теоретическом обосновании и разработке методологии применения статистических методов в управлении эффективностью функционирования финансово-промышленных групп в условиях переходной экономики.
37571. Управление деятельностью корпораций в россии 1.32 MB
  субъект 2 Управляющая компания Государство орпорация i Команда j Технологическая цепочка j Предприятие k Общекорпоративные подразделения Если у одной корпорации модуль отсутствует используется существующий модуль другой корпорации; Если у обеих корпораций присутствуют аналогичные модули то используется более эффективный а другой сокращается. Корпорация Портфель 1 Элемент Портфель 2 Элемент Портфель N Элемент 1 7 2 6 3 5 4 Анализ возможностей Планирование Организация Диспетчирование Мотивация Контроль Регулирование Определение потребностей...
37572. ЭФФЕКТИВНОСТЬ УПРАВЛЕНИЯ ФАКТОРАМИ ПРОИЗВОДСТВА В КОРПОРАЦИЯХ ОБОРОННОЙ ПРОМЫШЛЕННОСТИ РОССИИ 3.27 MB
  Корпорации оборонной промышленности в экономике России [2. Инструментарий формирования факторов производства корпорации оборонной промышленности [3.1] Разработка плана финансирования деятельности корпорации оборонной промышленности [3. Разработка и обоснование методики оценки прогнозирования оптимального состава факторов производства корпорации оборонной промышленности [3.