Автоматические:
описываются в функциях (без static);
распределяются в памяти на этапе выполнения (при каждом вызове подпрограммы) и освобождают память при завершении работы программы;
место в памяти – стек функций;
доступны в блоке функции.
Динамические:
описываются не данные, а их адреса (указатели);
распределяются и уничтожаются в памяти на этапе выполнения программы по специальным командам;
место в памяти – динамическая память (англ. куча – heap);
время жизни и область действия указателей определяется как для обычных (статических или автоматических) данных.
                                
начало
Цепочки, списки
                                
Основные операции для работы с указателями:
* - взятие содержимого по адресу (*i - содержимое переменной с адресом i)
& - взятие адреса (&a - адрес переменной а).
Описание имеет вид:
тип *имя_указателя;
При описании указателя задается тип значения, на которое он указывает.
Примеры описаний: int *i, j, *pointj;
int v1, *pointv1=&v1, *p=(int*)200;
                                
Связь массивов с указателями в Си
                                
#include  #include 
#include 
#include 
void main()
{ int *a, n, i;
 cout<<"Input the number of elements\n";
 cin>>n;
 a=(int*)malloc(n*sizeof(int));
 //распред-ие памяти под динамический массив
 cout<<"Input elements\n";
 for (i=0;i
 for (i=0;i
 cout<<"Squares of elements:\n";
 for (i=0;i
 free(a);
}
#include 
void main()
{int *a, n, i;
 cout<<"Input the number of elements\n";
 cin>>n;
 a=new int[n]; 
//распред-ие памяти под динамич. массив
 cout<<"Input elements\n";
 for (i=0;i
 for (i=0;i
 cout<<"Squares of elements:\n";
 for (i=0;i
 delete [] (a);
}
                                
#include  можно сделать строки матрицы разной длины - ввод m в цикле
#include 
void main()
{ int **a, n,m, i,j; 
 cout<<"Input n,m\n";
 cin>>n>>m;
 a=new int*[n]; 
 cout<<"Input matrix\n";
 for (i=0;i
   for (j=0;j
   }
 for (i=0;i
 cout<<"The changed matrix:\n";
 for (i=0;i
  }
 delete [] a;
 _getch(); 
}
                                
float sum(float **a, int n, int m)
{
  float s; int i,j;
  s=0;
  for (i=0;i
  return (s);
}
                                
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть