Читайте также:
|
|
Выделения памяти
new тип[количество]
результат (адрес начала выделенной памяти) помещается в указатель.
Выделение памяти под одну переменную:
int *p;
p=new int; // *p обращение к значению переменной
Под массив
int *y;
y=new int[n];
Удаление памяти
delete указатель
или
delete [] указатель;
delete p;
delete [] y;
Динамическая память выделяется в куче.
Задачи:
Вычислить значение функции, используя указатели для работы с переменными.
void main(){
float *x,*y;
// память под переменную
x=new float;
y=new float;
// ввод
printf(“\n Введи x \n”);
scanf(“%f”, x);
// вычисление
*y=2*(*x)+1;
// вывод
printf(“\n x=%-6.2f, y=%-6.2f”,*x,*y);
getch();
delete x;
delete y;
}
Использование рабочего указателя в задачах обработки вектора
Обычный код вычисления суммы
s=0;
for (i=0;i<n;i++)
s+=A[i];
с использованием рабочего указателя
int *yA;
s=0;
for (yA=A;yA<A+n;yA++)
s+=*yA;
//нахождение мах значения
max=A[0];
for (i=0;i<n;i++)
if (max<A[i]) max=A[i];
С помощью рабочего указателя
int *i;
max=*A;
for (i=A;i<A+n;i++)
if (max<*i) max=*i;
// сортировка пузырьком по возрастанию
for (i=0;i<n-1;i++)
for (j=0;j<n-i-1;i++)
if (A[j]>A[j+1])
{r=A[j];
A[j]=A[j+1];
A[j+1]=r;
}
int *j;
for (i=0; i<n-1;i++)
for (j=A;j<A+n-i-1;j++)
if (*j>*(j+1)){
r=*j;
*j=*(j+1);
*(j+1)=r;
}
Двухмерные массивы
Тип имя [количество элементов 1 размерности][количество элементов 2 размерности] [={{значение1,…},{значение 1,…},…}];
Доступ к элементу
B[i][j]
Изменяются i, j- от 0 до n-1
Пример
int A[2][3];
int C[3][2] = {{1,2},{-2,0},{1,-6}};
Основные алгоритмы работы с двумерными массивами:
1. ввод
2. вывод
3. поиск
4. сортировка
5. циклический сдвиг
Дата добавления: 2015-04-26; просмотров: 20 | Поможем написать вашу работу | Нарушение авторских прав |
<== предыдущая лекция | | | следующая лекция ==> |
Динамическая память | | | Указатели и двумерные массивы |