اطلاعیه

Collapse
No announcement yet.

نحوه استفاده از اشاره گر ها در کد ویژن

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نحوه استفاده از اشاره گر ها در کد ویژن

    با سلام به دوستان واساتید
    همه می دونیم که پوینتر چی هست مثلا وقتی تعریف میکنیم
    int *temp
    x=1232;
    temp=x;
    به جای عدد1232
    آدرس حافظه ای که این عدد ذخیره شده در temp قرار میگیره وزمانی که بنویسیم y=*temp برنامه مقدار مورد نظر رو از آدرس موجود درtemp خونده ودر y
    قرار میده
    ماسله اینه که بطور کاملا دقیق فایده این کار چیه وبه چه درد می خوره و چرا؟؟؟
    اگه از اساتید یک مسال جامع وکاربردی بزنند تا من و بقیه دوستان یاد بگیریم ممنون میشم با تشکر

    #2
    پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

    سلام
    یه مزیت اینه که پوینتر جایی از حافظه رو اشغال نمی کته
    استفاده از اونا برنامه رو حرفه ای تر می کنه
    دستی از دریا خواهد آمد...

    دیدگاه


      #3
      پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

      ممنون آقای یعقوبی
      ولی این چیزی هست که همه جا می خونیم
      می خوام بدونم اینا یعنی چی ؟؟
      چه جوری فضایی اشغال نمی کنه؟
      اون پایین ها چه اتفاقی میفته؟
      خوب چه فرقی میکنه یک پارامتر خود مقدار رو نیگر داره یا آدرسشو؟؟ بازم خوب قسمتی از حافظه رو اشغال کرده دیگه نه؟؟

      دیدگاه


        #4
        پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

        سلام
        یه نگاهی بنداز :
        http://www.barnamenevis.org/forum/showthread.php?t=205
        دستی از دریا خواهد آمد...

        دیدگاه


          #5
          پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

          و اینجا :
          http://www.labod.ir/algorithms/post.aspx?no=5
          دستی از دریا خواهد آمد...

          دیدگاه


            #6
            پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

            نوشته اصلی توسط هادی یعقوبی
            سلام
            یه نگاهی بنداز :
            http://www.barnamenevis.org/forum/showthread.php?t=205
            والا برا دلفی بود وچیزی نفهمیدم :angry:

            دیدگاه


              #7
              پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

              مزیت استفاده از پوینتر ها بیشتر در زبانهای سطح پایین مشخص میشه

              مثلا تو بسکام اصلا پوینتر به اون مفهومی که تو C داریم نداریم

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

              برای همین اصولا برای Memory Mapping دقیق از پوینتر ها استفاده میآ‌شود.

              دیدگاه


                #8
                پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

                یه سوال کنم که باعث شه یه چیزی یاد بگیرم
                فرضا ما یک آرایه رو در حافظه فلش ذخیره کردیم
                و یک پوینتر در sram هم محل حافظه این آرایه رو نگهداری میکنه
                سوال 1- آیه ما به این ترتیب در sram صرفه جویی کردیم؟ وبه جای نگهداری کل آرایه آدرس رو نگه داشتیم که در مواقع لازم بریم سراغش؟؟؟
                سوال2- اگه سوال بالایی جوابش ok هست حالا ما برای حرکت در طول آرایه با افزودن یک واحد به پوینتر در هر قدم آیا به اعضای آرایه دست خواهیم یافت؟؟؟
                که مذیت این کار دسترسی به اعضا ی یک آرایه بزرگ در حافظه فلش بدون فراخوانی اون در sram خواهد بود تو رو خدا بگید درسته که من برم کلی برنامه هامو optimize کنم حال کنم
                با تشکر از همه دوستان واساتید

                دیدگاه


                  #9
                  پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

                  نوشته اصلی توسط samisin
                  یه سوال کنم که باعث شه یه چیزی یاد بگیرم
                  فرضا ما یک آرایه رو در حافظه فلش ذخیره کردیم
                  و یک پوینتر در sram هم محل حافظه این آرایه رو نگهداری میکنه
                  سوال 1- آیه ما به این ترتیب در sram صرفه جویی کردیم؟ وبه جای نگهداری کل آرایه آدرس رو نگه داشتیم که در مواقع لازم بریم سراغش؟؟؟
                  سوال2- اگه سوال بالایی جوابش ok هست حالا ما برای حرکت در طول آرایه با افزودن یک واحد به پوینتر در هر قدم آیا به اعضای آرایه دست خواهیم یافت؟؟؟
                  که مذیت این کار دسترسی به اعضا ی یک آرایه بزرگ در حافظه فلش بدون فراخوانی اون در sram خواهد بود تو رو خدا بگید درسته که من برم کلی برنامه هامو optimize کنم حال کنم
                  با تشکر از همه دوستان واساتید

                  سلام
                  بله استفاده از اشاره گر باعث صرفه جویی درSram به دلیل عدم نیاز به متغیر می شود
                  از طرفی کار با رشته ها و آرایه ها رو بسیار آسان می کند
                  به قول بر و بچ "هلو"
                  دستی از دریا خواهد آمد...

                  دیدگاه


                    #10
                    پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

                    در ضمن دوست عزیز
                    چون شما با CodeVision برنامه می نویسی
                    حتما برای کار با رشته ها از اشاره گر تا می تونی سوءاستفاده کن :mrgreen:
                    دستی از دریا خواهد آمد...

                    دیدگاه


                      #11
                      پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

                      نوشته اصلی توسط هادی یعقوبی
                      در ضمن دوست عزیز
                      چون شما با CodeVision برنامه می نویسی
                      حتما برای کار با رشته ها از اشاره گر تا می تونی سوءاستفاده کن :mrgreen:
                      آقا هادی میشه یه لطفی کنی دو خط مثال بنویسی ؟؟
                      اون مواردی که گفتم درسته؟؟
                      مثلا وقتی می خوایم به یک آرایه در حافظه فلش اشاره کنیم و بعد به اعضا شون دسترسی پیدا کنیم میشه یه مثال بزنید؟؟
                      با تشکر

                      دیدگاه


                        #12
                        پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

                        سلام
                        این برنامه تعداد دفعات تکرار یک کاراکتر در یک رشته رو مشخص می کنه :

                        #include <mega32.h>
                        #include <lcd.h>
                        #include<stdio.h>

                        #asm
                        .equ __lcd_port=0x15 ;PORTC will be used for LCD output
                        #endasm

                        char lcd_buffer[20] = "salam samisin";
                        char i, s[10];
                        char *pointer;

                        void main(){
                        lcd_init(16);
                        lcd_clear();
                        pointer = lcd_buffer;
                        while(*pointer)
                        if (*pointer++ == 'a&#039
                        i++;

                        sprintf(s, " N : %d", i);
                        lcd_puts(s);
                        while(1);
                        }
                        دستی از دریا خواهد آمد...

                        دیدگاه


                          #13
                          پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

                          نوشته اصلی توسط هادی یعقوبی
                          سلام
                          این برنامه تعداد دفعات تکرار یک کاراکتر در یک رشته رو مشخص می کنه :

                          #include <mega32.h>
                          #include <lcd.h>
                          #include<stdio.h>

                          #asm
                          .equ __lcd_port=0x15 ;PORTC will be used for LCD output
                          #endasm

                          char lcd_buffer[20] = "salam samisin";
                          char i, s[10];
                          char *pointer;

                          void main(){
                          lcd_init(16);
                          lcd_clear();
                          pointer = lcd_buffer;
                          while(*pointer)
                          if (*pointer++ == 'a&#039
                          i++;

                          sprintf(s, " N : %d", i);
                          lcd_puts(s);
                          while(1);
                          }
                          واقعا ممنون
                          خیلی کمک کرد
                          و میشه اون آرایه رو در حافظه فلش ذخیره کرد؟ char lcd_buffer[20] = "salam samisin";

                          یک سوال هم اینجا برام پیش اومد
                          فرضا اگه آرایه ما از نوع LONG INT بود اضافه شدن یک واحد به پوینتر در avr هشت بیتی به عضو بعدی آرایه نمی رسه درسته؟؟ چون long int 32 بیتی هست آیا برای رسیدن به ابتدای کد مورد نظر باید چهار واحد به پوینتر اضافه کنیم یا اگه پوینتر رو از نوع long int تعریف کنیم کافیه وبه اضای یک واحد افزایش پوینتر کد مورد نظر رو می تونیم تو یه متغییر جا بدیم؟؟؟
                          مثلا
                          long int str[ ]={ 100000,200000,30000}

                          long int *poimter;
                          whiel (*pointer)
                          { if(pointer+=3) ==300000)
                          آیا الان
                          این شرط درسته؟؟؟؟

                          دیدگاه


                            #14
                            پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

                            بله آرایه رو میشه تو Flash ذخیره کرد
                            برای کاربا هر نوع از متغیرها باید پوینتر شما از همون نوع باشه
                            در ضمن گام حرکت پوینتر بر اساس نوعشه
                            اگه بایته با هر واحد افزایش یک بایت اگه INT دو بایت و...
                            در ضمن شروع حرکت از صفره
                            اونجا شما باید دوتا اضافه کنی تا به سومی برسی
                            موفق باشی
                            دستی از دریا خواهد آمد...

                            دیدگاه


                              #15
                              پاسخ : نحوه استفاده از اشاره گر ها در کد ویژن

                              نوشته اصلی توسط هادی یعقوبی
                              بله آرایه رو میشه تو Flash ذخیره کرد
                              برای کاربا هر نوع از متغیرها باید پوینتر شما از همون نوع باشه
                              در ضمن گام حرکت پوینتر بر اساس نوعشه
                              اگه بایته با هر واحد افزایش یک بایت اگه INT دو بایت و...
                              در ضمن شروع حرکت از صفره
                              اونجا شما باید دوتا اضافه کنی تا به سومی برسی
                              موفق باشی
                              این خیلی عالیه یعنی بدون آوردن آرایه ای که تو فلش هست میشه به اعضا دست پیدا کرد

                              دیدگاه

                              لطفا صبر کنید...
                              X