ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 10 از 10
  1. #1
    2007/12/19
    179
    13

    تعريف و استفاده از بُــردار

    سلام دوستان
    من براي يه کاري در LPC 1768 مي خوام يه سري داده رو روي بردار بريزم که طول بردار 1024 بايت يا 256 تا 4 بايت باشه. و با يه اشاره گري، چيزي به هر خانه دسترسي داشته باشم. و بتونم به هر خانه دسترسي داشته باشم. مي خواستم بدونم توي C بردار چحوري تعريف مي شه. و آيا توي LPC هم جواب مي ده؟؟
    يعني مثل دستور goto محدوديت ايجاد نمي کنه؟؟
    ممنون
    اين که تعداد تشکر هاي اهدايي يه کاربر زياده به اين معنا نيست. که چيزي بلد نيست؛ بلکه نشانه اينه که به تلاش بقيه بچه ها احترام مي گذاره
  2. #2
    2007/12/13
    تهران
    732
    15

    پاسخ : تعريف و استفاده از بُــردار

    اگر منظور شما از بردار رشته يا استرينگ ه به اين صورت تعريف ميشه :
    data_type name [length] ;
    براي مثال :
    char str [12] ;
    در مثال بالا يک استرينگ به طول 12 بايت توليد شده است.
    براي دسترسي مستقيم کافيست ايندکس دلخواه رو بدهيد .مثال:
    str[0]=0xff;
    با اين کار اولين خانه اين رشته را مقدار 0xff داده ايم.

    sram داخلي lpc1786 مقدار 64kB ميباشد . بنابر اين از اين نظر مشکلي نداريد.

    در مورد دستور goto متوجه سوال شما نشدم
    از جمله ی رفتگان این راه دراز
    باز آمده ای کو که به ما گوید راز
    هان بر سر این دو راهه از روی نیاز
    چیزی نگذاری که نمی آیی باز
  3. #3
    2007/12/19
    179
    13

    پاسخ : تعريف و استفاده از بُــردار

    ممنون
    خودم يه جورايي براي بردارهاي کوچيک(90خونه اي ) راه انداخته بودمش.
    من مي خوام يه بردار 512 تايي از مقادير char ايجاد کنم به نام buf وقتي مي نويسم:
    کد:
    char buf[512]={0};
    به مشکل بر مي خورم. در واقع بيشتر از 90 واحد، براي اين رشته قابل تعريف نيست.
    مثلا کد من اينه:
    کد:
    # include <stdio.h>
    int main (void){
    int bytes_read;
    int i,j={0};
    char temp[4]={0};
    char buf[90]={0};
    bytes_read=5678;
    
    do{
    				sprintf(temp,"%d",bytes_read);
    				for (j=0;j<4;j++){
    					buf [i]=(temp[j]);
    					i++;
    				}
    				buf [i]=10;
    				i++;
    				bytes_read ++;
    			}while(i<=90);
    }
    وقتي به جاي 90 هاي موجود در کد بگذارم 500 برنامه جواب نمي ده و انگار که هنگ مي کنه يا توي حلقه بي نهايت مي ره!
    حالا براي دنبال کردن کد ها اگه يه جايي يه لامپي رو روشن کنم،(خروجي رو تعريف کنم که يک بشه) لامپه روشن نمي شه! يعني برنامه به اونجا نرسيده!
    می شه بگین این رجیستر های R0 تا R15 دقیقا کارشون چیه؟؟الان این آرایه ای که مد نظر منه توی این R ها ذخیره می شه یا توی جای دیگه ای توی SRAM؟
    می شه در صورت امکان، راهنمائیم کنین؟
    ممنون
    اين که تعداد تشکر هاي اهدايي يه کاربر زياده به اين معنا نيست. که چيزي بلد نيست؛ بلکه نشانه اينه که به تلاش بقيه بچه ها احترام مي گذاره
  4. #4
    2012/07/21
    834
    26

    پاسخ : تعريف و استفاده از بُــردار

    خیلی عجیبه. نباید خطایی به وجود بیاد. 1768 تا 32 کیلوبایت بدون محدودیت می تونه از SRAM استفاده کنه.
    امیر خان، رجیسترهای داخلیِ میکروکنترلر رو فراموش کن. اونا برای عملیات سطح پایین انتقال و محاسبه و منطق هسته CPU استفاده می شن. تمام متغیرهایی که توی برنامه تعریف می کنی توی RAM نگهداری می شن.
    شما یه چیزی رو امتحان کن؛ متغیرها رو قبل از main تعریف کن. بعد از include ها. با این کار متغیرها توی پشته (Stack) ذخیره نمی شن و یه راست می رن توی RAM. اگه متغیرها رو در داخل main تعریف کنی، حتماً توی پشته ذخیره می شن و ممکنه سهواً موقع کامپایل اندازه پشته رو مقدار کمی قرار داده باشی (یا به صورت پیش فرض مقدار کمی داشته باشه).
    دقت کن که شمارنده ها و اندیس ها char یا 8 بیتی نباشند که بیشتر از 255 براشون بی معنیه.
    من برنامه هایی با آرایه های بزرگ نوشتم. مشکلی نداشتم تا حالا.
    بیایید با Google آشتی کنیم!
  5. #5
    2007/12/19
    179
    13

    پاسخ : تعريف و استفاده از بُــردار

    نقل قول نوشته اصلی توسط محمد رستمي
    خيلي عجيبه. نبايد خطايي به وجود بياد. 1768 تا 32 کيلوبايت بدون محدوديت مي تونه از SRAM استفاده کنه.
    امير خان، رجيسترهاي داخليِ ميکروکنترلر رو فراموش کن. اونا براي عمليات سطح پايين انتقال و محاسبه و منطق هسته CPU استفاده مي شن. تمام متغيرهايي که توي برنامه تعريف مي کني توي RAM نگهداري مي شن.
    شما يه چيزي رو امتحان کن؛ متغيرها رو قبل از main تعريف کن. بعد از include ها. با اين کار متغيرها توي پشته (Stack) ذخيره نمي شن و يه راست مي رن توي RAM. اگه متغيرها رو در داخل main تعريف کني، حتماً توي پشته ذخيره مي شن و ممکنه سهواً موقع کامپايل اندازه پشته رو مقدار کمي قرار داده باشي (يا به صورت پيش فرض مقدار کمي داشته باشه).
    دقت کن که شمارنده ها و انديس ها char يا 8 بيتي نباشند که بيشتر از 255 براشون بي معنيه.
    من برنامه هايي با آرايه هاي بزرگ نوشتم. مشکلي نداشتم تا حالا.
    ممنون داداش لطف بزرگي به من کردي!
    هرچند که اين بخش هاي فروم بيشتر شبيه خونه ارواحه اما يکي هم مثل شما پيدا مي شه که کار آدم رو راه بندازه.
    اين که تعداد تشکر هاي اهدايي يه کاربر زياده به اين معنا نيست. که چيزي بلد نيست؛ بلکه نشانه اينه که به تلاش بقيه بچه ها احترام مي گذاره
  6. #6
    2007/04/20
    كره زمين
    1,409
    78

    پاسخ : تعريف و استفاده از بُــردار

    گفتی ارواح فکر کردم صدای من زدی!!

    ممکنه بخاطر لاینسنس کامپایلرت باشه عوضش کن ببین چی میشه

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    انجام پروژه هاي برنامه نويسي اندرويد
    [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  7. #7
    2007/12/19
    179
    13

    پاسخ : تعريف و استفاده از بُــردار

    ممنون

    با راه حل آقاي رستمي کارم راه افتاد . يعني شما مي فرمائين با تعويض لايسنس، بردار توي خود استک هم جواب مي ده؟
    لايسنس رو عوض کردم.
    همين دوتا کافيه؟

    ممنون
    اين که تعداد تشکر هاي اهدايي يه کاربر زياده به اين معنا نيست. که چيزي بلد نيست؛ بلکه نشانه اينه که به تلاش بقيه بچه ها احترام مي گذاره
  8. #8
    2007/12/19
    179
    13

    پاسخ : تعريف و استفاده از بُــردار

    راستي لايسنس ها رو که عوض مي کني فرقي نمي کنه.
    تا بافر رو مي برم توي تابع جواب نمي ده و تا مي برمشون بيرون(بعد از اينکلود درست مي شه!)
    حالا ما تو يه فروم خارجي اين رو از ملت پرسيديم، مي گن به صورت موقتي جواب گرفتي. رومون نمي شه بهشون بگيم که دارم کرک استفاده مي کنيم که!
    آدرس فروم خارجيه:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    اين که تعداد تشکر هاي اهدايي يه کاربر زياده به اين معنا نيست. که چيزي بلد نيست؛ بلکه نشانه اينه که به تلاش بقيه بچه ها احترام مي گذاره
  9. #9
    2007/04/20
    كره زمين
    1,409
    78

    پاسخ : تعريف و استفاده از بُــردار

    نقل قول نوشته اصلی توسط Amirkhan_0o0
    ممنون

    با راه حل آقاي رستمي کارم راه افتاد . يعني شما مي فرمائين با تعويض لايسنس، بردار توي خود استک هم جواب مي ده؟
    لايسنس رو عوض کردم.
    همين دوتا کافيه؟

    ممنون
    گفتم شاید به این دلیل باشه که گفتین حل شده پس خدا رو شکر!
    انجام پروژه هاي برنامه نويسي اندرويد
    [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  10. #10
    2012/07/21
    834
    26

    پاسخ : تعريف و استفاده از بُــردار

    قربون مرامت امیر خان.
    ایشاللا که همیشه موفق باشی.
    باز هم به دوستان توصیه می کنم که متغیرهای با حجم زیاد رو توی توابع فرعی، یا حتی تابع main تعریف نکنند. متغیرها رو عمومی تعریف کنید تا Stack بیخودی اشغال نشه.
    بیایید با Google آشتی کنیم!
نمایش نتایج: از 1 به 10 از 10

موضوعات مشابه

  1. تعريف متغير
    توسط nsm در انجمن Labview
    پاسخ: 2
    آخرين نوشته: 2014/11/12, 22:20
  2. تعريف اصطلاح...
    توسط ahmad... در انجمن مفاهیم پایه برق و الکترونیک
    پاسخ: 4
    آخرين نوشته: 2011/12/16, 20:31
  3. تعريف top level؟
    توسط aminanet در انجمن نرم افزار Protel
    پاسخ: 1
    آخرين نوشته: 2011/03/09, 18:06
  4. تعريف i2c
    توسط pooyafff در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2010/05/29, 06:52
  5. تعريف عنصر در DXP
    توسط رضا سپاس یار در انجمن نرم افزار Protel
    پاسخ: 4
    آخرين نوشته: 2006/09/21, 18:35

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

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