اطلاعیه

Collapse
No announcement yet.

یه سوال کوچولو-مربوط به کد نویسی به زبون c

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

    یه سوال کوچولو-مربوط به کد نویسی به زبون c

    یه نیم چه سوال :redface: :redface: :redface: :redface:
    فرق دو تا خط زیر چیه

    کد:
    send(*column , 64);
    send(column , 64);
    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

    اگه دوس دارید سریع به جواب برسید :
    1) قبل از پرسیدن سوال، بسرچید.
    2) سوالاتون رو با جزئیات کامل مطرح کنید.

    #2
    پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زبون c

    با سلام
    اول اینکه این نیمچه سوال نیست خیلی سواله !!! :rolleyes:
    شما اول بگید که اون متغییر colum از چه نوعی و چطوری تعریف شده؟؟؟
    این خیلی مهمه
    ولی حدس من از این دو تا خط که نوشتید این هست که این colum یک اشاره گر هست :read:
    اگر این طوری باشه
    خط اول یعنی مقدار متغییری که colum بهش اشاره می کنه رو در 64 ضرب کن و بفرست برای تابع send و هیچ مقداری هم بر نمی گرده
    ولی خط دوم ادرس رو در 64 ضرب می کنه و می فرسته

    در کل باید بگی که نوع متغییر colum چیه
    بعدش میشه گفت فرق این دو تا خط دقیقا با هم چیه

    دیدگاه


      #3
      پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زبون c

      این کد روش تعریف اشاره گرها رو نشون میده.
      خط اول آدرس متغیر column رو به تابع میفرسته، ولی خط دوم خود متغیر ویا به عبارتی محتوای داخل آدرس متغیر column رو به تابع میفرسته.
      برای اینکه بهتر متوجه بشید متغیر را بصورت زیر نوشته و اجرا کنید، میبینید که در ال سی دی آدرس متغیر چاپ میشود:
      کد:
      sprintf(str,"%d",*column);
      lcd_puts(str);
      انسانها 10 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!

      دیدگاه


        #4
        پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زبون c

        نوشته اصلی توسط sr.morteza
        با سلام
        اول اینکه این نیمچه سوال نیست خیلی سواله !!! :rolleyes:
        شما اول بگید که اون متغییر colum از چه نوعی و چطوری تعریف شده؟؟؟
        این خیلی مهمه
        ولی حدس من از این دو تا خط که نوشتید این هست که این colum یک اشاره گر هست :read:
        اگر این طوری باشه
        خط اول یعنی مقدار متغییری که colum بهش اشاره می کنه رو در 64 ضرب کن و بفرست برای تابع send و هیچ مقداری هم بر نمی گرده
        ولی خط دوم ادرس رو در 64 ضرب می کنه و می فرسته

        در کل باید بگی که نوع متغییر colum چیه
        بعدش میشه گفت فرق این دو تا خط دقیقا با هم چیه
        کجا ضرب میکنه برادر من؟!! :eek:
        انسانها 10 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!

        دیدگاه


          #5
          پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زبون c

          نوشته اصلی توسط hamedtaran
          کجا ضرب میکنه برادر من؟!! :eek:
          من اون کاما رو نقطه دیدم !!!!

          دیدگاه


            #6
            پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زبون c

            نوشته اصلی توسط sr.morteza
            با سلام
            اول اینکه این نیمچه سوال نیست خیلی سواله !!! :rolleyes:
            شما اول بگید که اون متغییر colum از چه نوعی و چطوری تعریف شده؟؟؟
            این خیلی مهمه
            ولی حدس من از این دو تا خط که نوشتید این هست که این colum یک اشاره گر هست :read:
            اگر این طوری باشه
            خط اول یعنی مقدار متغییری که colum بهش اشاره می کنه رو در 64 ضرب کن و بفرست برای تابع send و هیچ مقداری هم بر نمی گرده
            ولی خط دوم ادرس رو در 64 ضرب می کنه و می فرسته

            در کل باید بگی که نوع متغییر colum چیه
            بعدش میشه گفت فرق این دو تا خط دقیقا با هم چیه
            دادا متغیر colum از نوع آرایه هستش...
            تو دو خط زیر هم اون علامه , هستش و نه ضربدر (فونت متن کوچیک باشه این مشکلات پیش میاد...)

            کد:
            send(*column , 64);
            send(column , 64);
            الان میشه توضیح بدی./.............. :redface: این سوال عظیم رو :biggrin:
            اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

            اگه دوس دارید سریع به جواب برسید :
            1) قبل از پرسیدن سوال، بسرچید.
            2) سوالاتون رو با جزئیات کامل مطرح کنید.

            دیدگاه


              #7
              پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زبون c

              نوشته اصلی توسط hamedtaran
              این کد روش تعریف اشاره گرها رو نشون میده.
              خط اول آدرس متغیر column رو به تابع میفرسته، ولی خط دوم خود متغیر ویا به عبارتی محتوای داخل آدرس متغیر column رو به تابع میفرسته.
              برای اینکه بهتر متوجه بشید متغیر را بصورت زیر نوشته و اجرا کنید، میبینید که در ال سی دی آدرس متغیر چاپ میشود:
              کد:
              sprintf(str,"%d",*column);
              lcd_puts(str);
              nhدادا ممنون فقط :cry: :cry: :cry: :cry: :cry: :cry: :cry:
              میشه بیشتر توضیح...............


              راستی من فکر میکردم انسانها 9 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!>>>10 هه از کجا اومد
              اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

              اگه دوس دارید سریع به جواب برسید :
              1) قبل از پرسیدن سوال، بسرچید.
              2) سوالاتون رو با جزئیات کامل مطرح کنید.

              دیدگاه


                #8
                پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زبون c

                نوشته اصلی توسط md3848
                الان میشه توضیح بدی./.............. :redface: این سوال عظیم رو :biggrin:
                خوب همون که گفتم
                این متغییر شما اشاره گر هست
                توی خوط اول مقدار اشاره گر فرستاده میشه
                و توی خط دوم ادرسش
                وقتی یک متغییر بصورت زیر تعریف بشه
                کد:
                int *ptr;
                میشه یک اشاره گر یعنی توی حافظه فضایی رو اشغال نمی کنه
                وقتی بخواهیم مقدارش رو چاپ کنیم یا بفرستیم باید یک ستاره بزاریم پشت اون
                و اگر فقط اسمش رو بنویسی میشه ادرس اون متغییری که بهش اشاره می کنه

                برای اینکه دقیقا بفهمید که چی به چی هست باید مبحث اشاره گرها در سی رو بخونید
                شاید این سایت بهتون کمک کنه
                http://www.bekaran.com/Tutorials/CPP/Pointers.aspx?AspxAutoDetectCookieSupport=1

                دیدگاه


                  #9
                  پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زبون c


                  راستی من فکر میکردم انسانها 9 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!>>>10 هه از کجا اومد
                  داداش من اون 10 نیست، :angry: اگه باینری بلد باشی میخونیش 2 :applause: :applause: :applause:

                  کد:
                  میشه بیشتر توضیح...............
                  هر متغیر یه جایی توی حافظه ذخیره میشه. که اون حافظه قابل ادرس دهی هست. مثلا متغیر A که از نوع unsigned int که 16 بیتی هست داخل خونه 58 , 59 حافظه ذخیره شده (با فرض اینکه هر خانه حافظه 8 بیتی هست) مقدار متغیر مثلا 7 هست
                  روابط زیر رو داشته باش:
                  کد:
                  unsigned int A = 7;
                  unsigned int B = *A; // B = 58
                  'گرفتی چی شد؟
                  اللهم صل علی محمد و ال محمد و عجل فرجهم
                  >>> www.DMF313.ir <<<
                  اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
                  در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
                  است.

                  دیدگاه


                    #10
                    پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زبون c

                    نوشته اصلی توسط md3848
                    nhدادا ممنون فقط :cry: :cry: :cry: :cry: :cry: :cry: :cry:
                    میشه بیشتر توضیح...............


                    راستی من فکر میکردم انسانها 9 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!>>>10 هه از کجا اومد
                    ببین خیلی راحته :agree:
                    مثلا میکرو آدرس (آدرسی از حافظه) 0x00FF را برای متغیر شما (column) در نظر گرفته باشه، تا اینجا مشکلی نیست؟
                    و مثلا شما قطعه کد زیر رو اجرا کردین و عددی ریختین توی متغیر column :
                    کد:
                    column=25;
                    تا اینجا هم مشکلی نیست؟
                    حالا اگه *column را بفرستی به ال سی دی، عدد 0x00FF را چاپ میکنه (همون آدرس تخصیص داده شده به متغیر)
                    ولی اگه column را بفرستی به ال سی دی، عدد 25 را چاپ میکنه (همون عددی که در column ریختیم)


                    والا از این راحت تر فک نمیکنم بشه توضیح داد :nerd:

                    واما سوال دوم: عدد 2 رو اگه به باینری تبدیل کنیم میشه 10
                    پس "انسانها 10 دسته اند" یعنی "انسانها 2 دسته اند :nerd: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند.
                    که شما جزو دسته دوم هستید :mrgreen:
                    موفق باشید
                    انسانها 10 دسته اند: دسته ای که باینری میدانند و دسته ای که باینری نمیدانند!

                    دیدگاه


                      #11
                      پاسخ : یه سوال کوچولو-مربوط به کد نویسی به زب&#1608

                      سلام به همه

                      دوستان چند نکته:
                      زمانی که یک متغیر از نوع اشاره گر تعریف میکنین مثل زیر:
                      کد:
                      int *p;
                      هر گاه بدون علامت " * " به اون مقداری رو نسبت بدین اشاره گر اون مقدار رو به عنوان آدرس حافظه قلمداد میکنه مثل زیر:
                      کد:
                      p=5;
                      از حالا آدرس اشاره گرp خانه شماره 5 است.
                      و هر گاه به اشاره گر با علامت " * " مقداری نسبت بدیم ، اشاره گر اون مقدار رو درون آدرسی که قبلا بهش دادیم میریزه
                      مثال:
                      کد:
                      *p=100;
                      پس با این توصیفات:
                      مثلا میکرو آدرس (آدرسی از حافظه) 0x00FF را برای متغیر شما (column) در نظر گرفته باشه، تا اینجا مشکلی نیست؟
                      و مثلا شما قطعه کد زیر رو اجرا کردین و عددی ریختین توی متغیر column :
                      کد: [انتخاب]
                      column=25;
                      تا اینجا هم مشکلی نیست؟
                      حالا اگه *column را بفرستی به ال سی دی، عدد 0x00FF را چاپ میکنه (همون آدرس تخصیص داده شده به متغیر)
                      ولی اگه column را بفرستی به ال سی دی، عدد 25 را چاپ میکنه (همون عددی که در column ریختیم)
                      در قسمتی که به column مقدار دادین اون هم به این شکل:
                      کد:
                      column=25;
                      درواقع آدرس column رو از 0X00FF به 25 تغییر دادین .
                      و اگر کار زیر رو انجام بدین:
                      حالا اگه *column را بفرستی به ال سی دی، عدد 0x00FF را چاپ میکنه (همون آدرس تخصیص داده شده به متغیر)
                      LCD محتویاتی که در محل آدرس 25 حافظه قرار گرفته رو نشون میده و اگر کار زیر رو انجام بدین:
                      ولی اگه column را بفرستی به ال سی دی، عدد 25 را چاپ میکنه (همون عددی که در column ریختیم)
                      LCD مقدار 25 رو نشون میده اما به این دلیل که در دستور
                      کد:
                      column=25;
                      آدرسش رو از 0X00FF به 25 عوض کرده بودیم
                      این نکته بسیار مهمه و به همه دوستان توصیه میکنم از آنجایی که یکی از دلایلی که باعث شده زبان C تا این حد قدرتمند باشه وجود همین اشاره گر ها بوده خیلی بهتره برای دانستن کامل این اشاره گر ها به کتاب های مربوطه مراجعه کنین که باز هم:
                      <<< در کتابها نمیتونین توضیح کاملی پیدا کنین اما توضیح نسبتا کامل رو میتونین پیدا کنین >>>
                      ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                      شهید دکتر مصطفی چمران
                      اللهم صل علی محمد و ال محمد و عجل فرجهم
                      ; C is not for children

                      دیدگاه

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