1

Тема: Як вивести адреса елементів в двовимірному динамічному масиві?

#include <iostream>
#include "string.h"
#include <cstring>
#include <ctime>
#include <iomanip>
#include <string>
 
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    int rows = 4;
    int cols = 5;
 
 
    cout << "Enter row  array : ";
    cin >> rows;
    cout << "Enter cols array : ";
    cin >> cols;
 
    int** arr = new int*[rows];
 
    for (int i = 0; i < rows; ++i)
    {
        arr[i] = new int[cols];
        //cout << arr[i] << "\t" << arr + i << endl;
    }
 
    for (int i = 0; i < rows; ++i)
    {
        for (int j = 0; j < cols; ++j)
        {
            arr[i][j] = rand() % 20;
        }
 
    }
 
    for (int i = 0; i < rows; ++i)
    {
        for (int j = 0; j < cols; ++j)
        {
            cout << setw(4) << setprecision(4) << arr[i][j] << " " << "Adrr elem=>" << arr + i ;
 
        }
        cout << endl;
    }
 
    /*
    for (int i = 0; i < size; ++i)
    {
        cout << arr[i] << "\t Addr -> " << arr + i << "  Цифри -> " << *(arr + i) << endl;
    }
    */
 
    
    for (int i = 0; i < rows; ++i)
    {
        delete [] arr[i];
        
    }
 
 
    delete[] arr;
 
 
 
    system("pause");
    return 0;
}

2 Востаннє редагувалося koala (09.06.2022 06:16:49)

Re: Як вивести адреса елементів в двовимірному динамічному масиві?

lilika написав:
#include "string.h"
#include <cstring>

Це один і той самий заголовковий файл - перший для C, другий для C++. Звісно, якщо у вас немає свого власного файла string.h у проєкті. Але я не бачу жодної функції звідти, якою б ви користувалися.

lilika написав:
#include <string>

Ви це не використовуєте.

lilika написав:
setlocale(LC_ALL, "rus");

А це вам тут нащо? Просто як чарівний рядок? Москаль-чарівник? Хоч би "Ukr" використовували.

lilika написав:
setprecision

Працює лише з числами із рухомою комою, тут це не потрібно.

lilika написав:

Як вивести адреса елементів в двовимірному динамічному масиві?

"Adrr elem=>" << arr + i ;

Якщо я зрозумів вас правильно (наступного разу висловлюйтеся точніше) і цей код не є відповіддю на питання із заголовка (скажімо, одне речення перед кодом "я намагалася зробити так, але замість ... воно виводить ..." вирішило б проблему), то тут ви намагаєтеся вивести адресу елемента arr[i][j]. Адреса елементу (змінної) береться за допомогою оператора &: &arr[i][j], відповідно, вам треба зробити

cout << "Adrr elem=>" << &arr[i][j];

Те, що ви намагалися зробити - схоже, скористатися співвідношенням &array[index]==array+index; у цьому записі, відповідно, мало б бути *(arr+i)+j, але так краще не робити (і ви вже маєте бачити, чому).

Подякували: leofun011