سلام ببخشید میشه درباره نحوه دسترسی به پوینتر های دوبعدی و سه بعدی توضیح بدین - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

سلام ببخشید میشه درباره نحوه دسترسی به پوینتر های دوبعدی و سه بعدی توضیح بدین

+1 امتیاز
مثلا وقتی میخوایم تابعی رو فراخوانی کنیمبرای و پوینتر رو بعنوان ورودی به تابع بدیم باید چجوری  بنویسیم و اینکه توی تابع فراخوانی شده چجوری باید استفاده کنیم.و برایdeleteکردن پوینتر سه بعدی باید چه کاری انجام بدیم؟
سوال شده آبان 10, 1398  بوسیله ی arefeh (امتیاز 21)   1 4 5

1 پاسخ

0 امتیاز
فرض کنید تابعی تعریف می کنیم که آدرس یک رشته را می گیره و چاپ می کنه به صورت زیر:
 
#include <iostream>

using namespace std;

void func1(char* str){
     cout << str << endl;
}

int main(){
  char str[] ="hello";
  func1(str);
  return 0;
}

 

 
فرقی نداره هر چند بعدی باشه اگر تک متغیر new کردید با delete و اگر به new مقداری را به عنوان تعداد دادید هنگام آزادسازی به جای delete باید از delete[] استفاده کنید.
 
#include <iostream>
using std::cout;
using std::endl;

int main()
{

    int*** ptrInt = new int**[3];

    for(int i(0); i < 3; i++)
        ptrInt[i] = new int*[3];

    for(int i = 0; i < 3; i++)
    {
        for(int j(0); j < 3; j++)
            ptrInt[i][j] = new int[3];
    }


    for(int i = 0; i < 3; i++)
    {
        for(int j(0); j < 3; j++)
            for(int k(0); k < 3; k++)
                ptrInt[i][j][k] = k;
    }

    for(int i = 0; i < 3; i++)
    {
        for(int j(0); j < 3; j++)
            for(int k(0); k < 3; k++)
                cout << "ptrInt[" << i << "][" << j << "][" << k << "]: " << ptrInt[i][j][k] << endl;
    }

    // now freeing memory:

    for(int i = 0; i < 3; i++)
    {
        for(int j(0); j < 3; j++)
            delete[] ptrInt[i][j];
        delete[] ptrInt[i];
    }
    delete[] ptrInt;


    cout << endl << endl << endl;
    return 0;
}

 

 

پاسخ داده شده آبان 10, 1398 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
ویرایش شده آبان 10, 1398 بوسیله ی مصطفی ساتکی
برای نوشتن یک تابع و فراخوانی کردنش
...