ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Динамические массивы, оператор new· Динамический массив-массив, число элементов которого неизвестно изначально. · Память под динамические массивы выделяется с помощью оператора new(либо функции malloc) int n=10; int *a=new int[n]; · double *b=(double*) malloc (n*sizof(double)); · Под динамический массив выделяется столько памяти, сколько нужно для хранения величины типа int, величина n может быть переменной · Область действия динамического массива зависит от места описания указателя через который производится работа с массивами · Локальная переменная при выходе из блока теряется · Если переменная-указатель, то при выходе из блока, динамическая память перестаёт быть доступна, однако она не помечается, как свободная и не может быть использована в дальнейшем, это называется утечкой памяти и является распространённой ошибкой. · Ф-я malloc унаследована из библиотеки С, желательно использовать new · Динамические двумерные массивы: при выделении памяти сразу под весь массив, кол-во строк –самую левую размерность. можно задавать с помощью переменной, а кол-во столбцов с помощью константного выражения. После слова new записывается тип массива, затем его размерности в квадратных скобках int n; const int m=5; cin>>n; int (*a)[m]=mew int [n][m]; int **b=(int**) new int [n][m]; · Для того, чтобы понять почему динамические массивы объявляются именно так, нужно разобраться в индексации: поскольку для доступа к элементу массива применяются 2 операции разадресации, переменная в которой хранится адрес начала массива должна быть указателем к указателю. · Более универсальный способ: int nrow,ncol; cout<<”Введите n, m”<<endl; cin>>nrow>>ncol; int **a=new int *[nrow]; //1 for (int i=0; i<nrow; i++) //2 a[i]=new int [ncol]; //3 В 1 объявляется переменная типа указатель на указатель на int и выделяется память под массив указателей на строки массива В 2 организуется цикл для выделения памяти под каждую строку массива В 3 каждому элементу массива указателя на строки присваивается адрес начала участка памяти, выделенной под строку двумерного массива · ·
Не нашли, что искали? Воспользуйтесь поиском:
|