نمایش نتایج 1 تا 15 از 15

نام تاپیک: استفاده از اشاره گر

  1. #1

    استفاده از اشاره گر

    سلام
    چطوری باید توی C#‎.net اشاره گر تعریف کرد
    مثلا
    int * next

    ممنون

  2. #2
    کاربر دائمی آواتار Cold.82
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    پست
    204

    نقل قول: استفاده از اشاره گر

    اصولا اینطوری استفاده می کنند البته سی شارپ فقط در بلاکهای کدی اجازه می دهد از اشاره گر استفاده کنید(البته باید بلاکتان را علامت گذاری کنید)

  3. #3

    نقل قول: استفاده از اشاره گر

    سلام
    میشه یکم بیشتر توضیح بدیدن دقیقا یعنی چی؟

    من می خوام یک کلاس تعریف کنم برای PUSH و POP کردن(ساختن stack) و می خوام ساختار stack رو با اشاره گر تعریف کنم
    میخواستم بدونم میشه از اشاره گر استفاده کرد یا نه؟


    چون من خیلی کم .net کار میکنم ، فکر کنم موضوعی به اسم برنامه امن و نا امن مطرح میشه که دقیقا نمی دونم چیه.

    ممنون

  4. #4
    کاربر دائمی آواتار Cold.82
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    پست
    204

    نقل قول: استفاده از اشاره گر



    unsafe {
    int* pInt = stackalloc int[30];
    *pInt = 5;
    //pInt[0]=5;
    *(pInt + 1) = 6;
    //pInt[1]=6;

    Console.WriteLine("*pInt={0}",*(pInt+1));


    }

    اصولا برای استفاده از اشاره گرها باید از این کلمه استفاده کنید

    این دستور یک حافظه ای رو بر روی پشته قرار می ده البته بدون هیچ مقدار دهی اولیه

    با این کدها هم می توانید مقدار دهی کنید و یا به عناصر دسترسی داشته باشید

    البته این کد یک پشته رو پیاده سازی نمی کنه البته یک ارایه است مبتنی بر پشته

    در مورد کد نا امن هم برفرض مثال اگر همین رو در نظر بگیریم به 2 صورت می شود پیاده سازی کرد


    int[] myInt = new int[10];
    myInt[25] = 1;
    که در اولی چون خارج از ارایه است exception ایجاد می شود


    int* pInt = stackalloc int[20];
    pInt[40]=8
    ولی در این کد هیچ گونه نظارتی انجام نمی گیرد

    برای کامپایل هم باید از قسمت properties قسمت Build گزینه Allow unsafe code رو انتخاب کرده باشین .

  5. #5

    نقل قول: استفاده از اشاره گر

    سلام
    راهی وجود نداره که بشه از اشاره گر استفاده کرد
    اما به کد ، safe اضافه نکرد؟
    مثل توابع API که مثلا به جای int * نوع داده ای با نام Pint وجود داره
    یا هر راه دیگه ای ، اما کارکرد آشاره گر رو داشته باشه
    ممنون

  6. #6
    کاربر دائمی آواتار Cold.82
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    پست
    204

    نقل قول: استفاده از اشاره گر

    من فکر نکنم این اجازه در سی شارپ داده شده باشه که بدون استفاده Unsafe بتوان از اشاره گر استفاده کرد .

  7. #7
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: استفاده از اشاره گر

    نقل قول نوشته شده توسط mahdi bg مشاهده تاپیک
    سلام
    راهی وجود نداره که بشه از اشاره گر استفاده کرد
    اما به کد ، safe اضافه نکرد؟
    مثل توابع API که مثلا به جای int * نوع داده ای با نام Pint وجود داره
    یا هر راه دیگه ای ، اما کارکرد آشاره گر رو داشته باشه
    ممنون
    شاید اگر توضیح بدهید که در کجا می خواهید از این اشاره گرها استفاده کنید ، راه حل بهتری باشد

  8. #8

    نقل قول: استفاده از اشاره گر

    سلام

    نقل قول نوشته شده توسط linux مشاهده تاپیک
    شاید اگر توضیح بدهید که در کجا می خواهید از این اشاره گرها استفاده کنید ، راه حل بهتری باشد

    سلام
    میخوام پشته رو با کمک لیست پیوندی پیاده سازی کنم

    اول تعریف نود

     
    struct node

    {
    type1 data1
    type2 data2
    .
    .
    .
    typen datan
    node * next
    }


    و در یک کلاس به اسم stack از این ساختار
    استفاده کنم
    ممنون

  9. #9
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: استفاده از اشاره گر

    نقل قول نوشته شده توسط mahdi bg مشاهده تاپیک
    سلام
    سلام
    میخوام پشته رو با کمک لیست پیوندی پیاده سازی کنم

    اول تعریف نود

     
    struct node

    {
    type1 data1
    type2 data2
    .
    .
    .
    typen datan
    node * next
    }


    و در یک کلاس به اسم stack از این ساختار
    استفاده کنم
    ممنون
    خوب یک وقتی مساله پیاده سازی stack هست یه وقتی استفاده از stack هست.
    اگر مساله بخش دوم هست در .نت stack پیاده سازی شده است ، می توانید از آن استفاده کنید
    در پیوند زیر یک مثال خوب به همراه توضیح هم هست.
    http://www.csharpfriends.com/Article...x?articleID=65

  10. #10

    نقل قول: استفاده از اشاره گر

    نقل قول نوشته شده توسط mahdi bg مشاهده تاپیک
    سلام
    از همه دوستان ممنون
    برنامه رو با VC++‎.net پیاده سازی کردم
    نمی صرفه به این همه دردسر توی C#‎

    فقط یک سوال دیگه
    چطوری میشه توی VC++‎.net
    cin و cout رو فراخوانی کرد خطا می گیره تعریف نشده؟


    ممنون
    پیاده سازی پشته در #C دردسری نداره و نیازی هم به اشاره گر نیست.

    در VC++‎.NET به جای cin و cout از Console استفاده کنید.

  11. #11

    نقل قول: استفاده از اشاره گر

    سلام
    من کد زیر رو نوشتم
    اما بلاک unsafe رو قبول نمیکنه
    مشکل کجاست؟



    بلاک unsfe رو فقط توی بلاک main قبول می کنه
    راهی وجود داره تا بتونم کد بالا رو درست کنم
    (باید از اشاره گر استفاده کنم)

    Allow unsafe code رو چکشو زدم

    ممنون

  12. #12
    کاربر دائمی آواتار Zaparo
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    this->this
    پست
    116

    نقل قول: استفاده از اشاره گر

    دوست عزیز شما در مورد CTS مطالعه کن مشکلت حل میشه همونطور که arsp گفتش نیازی به Pointer نیست شما باید یه کلاس خود ارجاع بنویسی با توجه به اینکه class در net. یه نوع داده مرجعی هست(RefrenceType) مشکلی پیش نمیاد بعد برای لیست پیوندی حتما" نباید Struct باشه میتونه کلاس مثلا"


    class Node
    {
    object Data;
    Node refrence;
    }
    اینیم که unsafe رو قبول نمیکنه بخاطر اینه که باید به compiler بفهمونید که کد شما باید unsafe ه این کار با دستور unsafe/ به کامپایلر فهمونده میشه ولی اگه از vs استفاده میکنید تو Properties پروژتون یه جا هست تیکش رو میزنید درست میشه :D
    فکر کنم Build باشه

  13. #13

    نقل قول: استفاده از اشاره گر

    سلام
    قبلش ازدوستان که پیگیر هستند ممنون

    WinFx Developer عزیز ممنون
    من هم میدونم استک رو میشه با غیر از لیست هم پیاده سازی کرد (آرایه)
    اما باید با لیست پیدا سازی کنم

    توی لینک زیر قسمتی از کد به زبان VC++‎.net میخواستم بدونم معادل اون به VC#‎.net چی میشه؟
     
    http://i28.tinypic.com/33acn6d.jpg


    قسمتی از کد اینه که تبدیلش به VC#‎.net برام مشکله


     
    struct mystack
    {
    int count1,count2;
    mystack * next;
    };
    class stack
    {
    mystack * Topstack;
    public:
    stack(){
    Topstack=NULL;}
    void push(int a,int b){
    mystack * p;
    p=new mystack;
    p->count1=a;
    p->count2=b;
    p->next=Topstack;
    Topstack=p;}
    };


    همون طور که معلومه من برای عناصر استک یک struct تعریف کردم
    و از اون توی کلاس stack استفاده کردم.
    مشکل اصلی من همین قسمته(تبدیل قسمتی های که
    از اشاره گر استفاده شده)
    ممنون

  14. #14

    Question نقل قول: استفاده از اشاره گر

    دوستان عزیز ببخشید یک تاپیک قدیمی رو کشیدم بالا.مشکل من دقیقا همین نکته هست اما صریح توضیح داده نشده.گفتم اگه تاپیک مجدد بزنم پاکش می کنن.این کد رو کجا باید بنویسم دقیقا؟ unsafe /رو کجا بنویسم؟هرجا می نویسم پیغام خطا میده...می خوام یک اشاره گر بسازم.(برای ساختن یک صف و استفاده از front و rear.ممنون میشم کامل توضیح بدید.
    unsafe {
    int* pInt = stackalloc int[30];
    *pInt = 5;
    //pInt[0]=5;
    *(pInt + 1) = 6;
    //pInt[1]=6;

    Console.WriteLine("*pInt={0}",*(pInt+1));


    }

  15. #15

    نقل قول: استفاده از اشاره گر

    پیغام خطات رو بذار اینجا.
    به احتمال خیلی زیاد ، سویچ /unsafe کامپایلر رو on نکردی
    Project -> Properties -> Build -> Allow Unsafe Code
    We work in the dark, we do what we can, we give what we have.
    Our doubt is our passion and our passion is our task.
    The rest is the madness of art

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •