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);

}


 

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

83776. Правовой статус налогоплательщиков, налоговых агентов и налоговых представителей 57.26 KB
  Возникновение обстоятельств влекущих уплату суммы налога или сбора служит юридическим фактом на основании которого субъект налогового права приобретает статус участника налоговых правоотношений. 11 НК РФ указывает что физические лица осуществляющие предпринимательскую деятельность без образования юридического лица но не зарегистрировавшиеся в качестве индивидуальных предпринимателей в нарушение требований гражданского законодательства при исполнении налоговых обязанностей не вправе ссылаться на то что они не являются индивидуальными...
83777. Банки как субъекты налогового права. Иные участники налоговых отношений 49.16 KB
  Иные участники налоговых отношений. 9 НК РФ к участникам налоговых отношений регулируемых законодательством о налогах и сборах фактически они таковыми являются и обладают специальным налоговоправовым статусом. Банки являются субъектами налоговых правоотношений обеспечивающими налоговые изъятия и наделенными в связи с этим соответствующими правами и обязанностями. Участие банков в налоговых отношениях носит более сложный по сравнению с иными участниками налоговых отношений регулируемых законодательством о налогах и сборах характер.
83778. Правовой статус налоговых органов. Их права и обязанности. Обязанности должностных лиц налоговых органов 43.23 KB
  Обязанности должностных лиц налоговых органов. Правовой статус налоговых органов РФ объем и характер прав и обязанностей системы налоговых органов России строго определенных законодательством. Правовое положение налоговых органов обусловлено их местом в системе органов государственного управления страны наделением их над ведомственными полномочиями по отношению к организационно неподчиненным объектам управления по контролю за соблюдением налогового законодательства правильностью их исчисления полнотой и своевременностью внесения в...
83779. Правовой статус таможенных органов, финансовых органов, органов внутренних дел, следственных органов 44.78 KB
  Таможенные органы пользуются правами и несут обязанности налоговых органов по взиманию налогов при перемещении товаров через таможенную границу Таможенного союза в соответствии с таможенным законодательством ТС и законодательством РФ о таможенном деле. При исполнении указанных функций таможенные органы и их должностные лица реализовывают в пределах своей компетенции права и обязанности налоговых органов ст. В ходе проведения контрольных мероприятий таможенные органы вправе: – запрашивать документы и сведения в том числе в форме электронных...
83780. Исполнение обязанности по уплате налогов и сборов. Объекты налогообложения. Принципы определения цены товаров, работ или услуг для целей налогообложения 44.19 KB
  Сущность исполнения налоговой обязанности заключается в уплате налога или сбора. Налоговая обязанность возникает с момента возникновения установленных налоговым законодательством обстоятельств предусматривающих уплату конкретного налога или сбора. Так вот обстоятельствами с которыми налоговое законодательство связывает возникновение налоговой обязанности являются следующие: вопервых это наличие объекта конкретного налога или сбора; вовторых это наличие непосредственной связи между этим объектом и субъектом налогоплательщиком. И...
83781. Исполнение обязанности по уплате налогов и сборов. Основания возникновения, изменения и прекращения обязанности по уплате налогов и соборов; порядок исчисления налогов; взыскание налога за счет денежных средств и иного имущества налогоплательщика 46.34 KB
  Основания возникновения изменения и прекращения обязанности по уплате налогов и соборов; порядок исчисления налогов; взыскание налога за счет денежных средств и иного имущества налогоплательщика. Возникновение обязанности по уплате налогов и сборов связано с несколькими обстоятельствами: с наличием конституционноправовой обязанности по уплате налогов по нормам законодательства о налогах и сборах в которых детализируется реализация обязанности по уплате налогов объектами налогообложения.  Основанием возникновения налогового обязательства...
83782. Изменение срока уплаты налога и сбора: общие условия изменения срока уплаты; обстоятельства исключающие изменение срока уплаты, органы, уполномоченные принимать решение об изменении сроков уплаты 41.84 KB
  Изменением срока уплаты налога и сбора признается перенос установленного срока уплаты налога и сбора на более поздний срок. Срок уплаты налога и или сбора может быть изменен в отношении всей подлежащей уплате суммы налога и или сбора либо ее части с начислением процентов на сумму задолженности. Изменение срока уплаты налога и сбора осуществляется в форме отсрочки рассрочки инвестиционного налогового кредита.
83783. Порядок и условия предоставления отсрочки и рассрочки по уплате налога и сбора. Инвестиционный налоговый кредит. Порядок и условия его предоставления 48.98 KB
  Отсрочка или рассрочка по уплате налога представляет собой изменение срока уплаты на срок не превышающий один год соответственно с единовременной или поэтапной уплатой суммы задолженности. Отсрочка или рассрочка может быть предоставлена заинтересованному лицу если имеются достаточные основания полагать что возможность уплаты указанным лицом такого налога возникнет в течение срока на который предоставляется отсрочка или рассрочка при наличии хотя бы одного из следующих оснований: 1 причинение этому лицу ущерба в результате стихийного...
83784. Требование об уплате налогов и сборов. Способы обеспечения исполнения обязанностей по уплате налогов и сборов 48.4 KB
  Требованием об уплате налога признается извещение налогоплательщика о неуплаченной сумме налога а также об обязанности уплатить в установленный срок неуплаченную сумму налога. Требование об уплате налога направляется налогоплательщику при наличии у него недоимки. Направляется налогоплательщику независимо от привлечения его к ответственности за нарушение законодательства о налогах и сборах. Требование об уплате налога должно содержать сведения о сумме задолженности по налогу размере пеней начисленных на момент направления требования сроке...