• خونه
  • تماس با ما
  • همکاری با ما
  • حمایت مالی
آزادی حجاز
  • News
  • AVR
    • AVR Train
      • آموزش جامع AVR
      • آموزش صحیح و خوانا نوشتن کد
    • تابلو روان
    • موتور
      • موتور DC
      • موتور پله ای
      • سرو موتور
    • سنسور و ماژول
      • RFID
      • التراسونیک
      • شتاب سنج
      • رطوبت سنج
      • دماسنج
      • بلوتوث
      • اتصال AVR به کامپیوتر
      • اتصال رم به AVR
      • فرستنده گیرنده رادیویی
      • ساعت و تاریخ
      • جوی استیک
    • IC
      • IC حافظه
      • ADC
      • DS1307(ساعت)
      • BCD TO 7S
      • شیفت ریجستر
    • LCD
      • LCD گرافیکی
      • LCD کاراکتری
      • LCD رنگی
    • LED – 7S – Dot Matrix
      • LED
      • سون سگمنت(۷S)
      • دات ماتریس
    • ساعت
    • پروگرامر
    • اسیلوسکوپ
    • ولتاژ،جریان،مقاومت،فرکانس،خازن و…
      • ولت متر
      • اهم متر
    • امواج
    • کی پد(KEY PAD)
    • فوتوسل
  • ARM
    • ARM Projects
    • ARM Train
      • AT91
      • STM32
      • LPC1768
      • LPC2368
  • Arduino
    • Arduino Train
    • Arduino Projects
  • Raspberry
  • FPGA
  • PCB
    • آلتیوم
      • آموزش آلتیوم
      • پروژه آلتیوم
  • S.W
    • Codevision
    • Proteus
    • Serial Port
    • Android
    • Labview
  • Analog
  • etc
    • Components
    • Android
    • C/C++/Qt
    • OpenCV
    • QuadCopter
    • PC And Micro
    • Communication Protocols
دلیل پیشرفت سریع آلمان و ژاپن
آموزش الکترونیک ۱ آموزش سینماتیک روبات ها آموزش آردوینو در Proteus
آموزش الکترونیک ۲ آموزش رباتیک و ربات های سری آموزش Proteus - تحلیل مدار
آموزش مبانی الکترونیک آموزش میکروکنترلر STM32F1xx آموزش آردوینو - کنترل با شبکه
برنامه نویسی Raspberry Pi آموزش AVR و Codevision - مقدماتی آموزش برنامه نویسی آردوینو با متلب
کاربرد Raspberry Pi در صنعت آموزش AVR و Codevision - تکمیلی آموزش برنامه نویسی آردوینو - رباتیک
● تبلیغات دیجیتال هوشمند● آموزش های رایگان● استخدام در فرادرس
شما اینجائید:خانه » برنامه نویسی » آموزش زبان c کار با آرایه دو بعدی

آموزش زبان c کار با آرایه دو بعدی

ارسال شده توسط:مهدی دمیرچیلو تاریخ ارسال: 2017/03/31 در برنامه نویسی 0

به نام خدا : تمام پروژه های این مطلب در ادیتور ++DEV-C نوشته شدن؛ تو این مطلب چیز خاصی نمیخوام بگیم، یکم درباره آرایه دو بعدی و کار باهاش صحبت میکنیم، هر چند این آرایه دو بعدی هم هر جایی استفاده نمیشه و خب به طبع این مطلب هم به درد هر کسی نمیخوره ^_^ ( آموزش زبان c کار با آرایه دو بعدی )
آموزش زبان c کار با آرایه دو بعدی

آموزش زبان c کار با آرایه دو بعدی


نحوه تعریف یه آرایه دو بعدی به صورت زیر هستش، در زیر من یه آرایه دو بعدی از نوع int ساختم، شما از هر نوعی دوست داشتین ایجاد کنید :

1
int A[m][n];

خب بر فرض که ما یه آرایه دو بعدی با نام A و اندازه m در n ایجاد کردیم، اندازه این آرایه ( بر حسب byte ) به صورت زیر محاسبه میشه :

1
m*n*sizeof(int)

 

دو شیوه تعریف آرایه دو بعدی

خب هر دو نوع تعریف آرایه دو بعدی زیر از دید کامپایلر ( نرم افزاری که توش کد میزنید! ) یکسانه و فرقی نداره، ولی بهتره که از شیوه اول استفاده کنید :

1
2
int A[2][3] = { {1,2,3}, {4,5,6} };
int A[2][3] = { 1,2,3, 4,5,6 };

آرایه دو بعدی
برا بررسی صحت حرف من مثال زیر رو تست کنید :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
void main()
{
int A[2][3] = { {1,2,3}, {4,5,6} };
int B[2][3] = { 1,2,3, 4,5,6 };
int i,j;
for( i=0; i<=1; i++ ) {
for( j=0; j<=2; j++ ) {
printf( "%d, ", A[i][j] );
}
}
printf("\n");
for( i=0; i<=1; i++ ) {
for( j=0; j<=2; j++ ) {
printf( "%d, ", A[i][j] );
}
}
while(1);
}

 

دسترسی به آرایه ۲ بعدی از طریق اشاره گرها

خب این قسمت خلاصه میگم و زیاد گیجتون نمیکنم، یه آرایه دو بعدی با نام A داریم :
سه روش زیر برای دسترسی به مقدار خونه های آرایه A با هم برابر هستند ( اینا رو برا اطلاعات عمومی گفتم، فعلا از همون روش اول استفاده میکینم تا ببینیم دو تا روش دیگه کجا به کارمون میان ) :

1
2
3
A[i][j]
*(A[i] + j)
*(*(A+i) + j)

3 روش زیر برای دسترسی به آدرس خونه های آرایه A با هم برابر هستن :

1
2
3
&A[i][j]
(A[i]+j)
(*(A+i)+j)

توجه : همون طور که از مبحث آرایه 1 بعدی به خاطر دارید، نام آرایه، آدرس خونه اول آرایه هستش.
برا بررسی صحت حرف من مثال زیر رو تست کنید :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
void main()
{
int A[5][4] =
{
        { 0,  1,  2,  3  }, // A[0][]
        { 4,  5,  6,  7  }, // A[1][]
        { 8,  9,  10, 11 }, // A[2][]
        { 12, 13, 14, 15 }, // A[3][]
        { 16, 17, 18, 19 }  // A[4][]
};
    // Meghdare KhoneHaye Araye
printf( "%d = %d = %d\n", A[0][0],   *A[0],     **A         ); // 0
printf( "%d = %d = %d\n", A[1][2],   *(A[1]+2), *(*(A+1)+2) ); // 6
// Address  KhoneHaye Araye
printf( "%d = %d = %d\n", &A[2][3],   (A[2]+3),   (*(A+2)+3) );
while(1);
}

 

ارسال آرایه 2 بعدی به تابع دیگر

در مثال زیر انواع روش هایی که به ذهنم میرسید و میدونستم و رو نوشتم :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
int A[5][4] = {
    { 0,  1,  2,  3  }, // A[0][]
    { 4,  5,  6,  7  }, // A[1][]
    { 8,  9,  10, 11 }, // A[2][]
    { 12, 13, 14, 15 }, // A[3][]
    { 16, 17, 18, 19 }  // A[4][]
};
void ShowArrayValue1( int Num ) { // Daryafte Meghdar >>> Namayesh ooon Meghdar
printf( "%d\n", Num );
}
void ShowArrayValue2( int *Adr ) { // Daryafte Address >>> Namayesh Tamam Maghadir
int i, j;
    for( i = 0;  i < 5; i++ )
    {
        for( j = 0; j < 4; j++ )
        {
            printf( "%d, ", *(*(A+i)+j) );
        }
    }
printf( "\n" );
}
void ShowArrayValue3( int Array[5][4] ) { // Daryafte Address >>> Namayesh Tamam Maghadir?????
int i, j;
    for( i = 0;  i < 5; i++ )
    {
        for( j = 0; j < 4; j++ )
        {
            printf( "%d, ", Array[i][j] );
        }
    }
printf( "\n" );
}
void ShowArrayValue4( int **Adr ) {
  int i, j;
  for (i=0; i<5; i++)
  {
    for (j=0; j<4; j++)
    {
      printf( "%d, ", *(*(A+i)+j) );
    }
  }
  printf( "\n" );
}
void ShowArrayValue5( int rows, int cols, int Array[rows][cols] ) {
  int i, j;
  for (i=0; i<rows; i++)
  {
    for (j=0; j<cols; j++)
    {
      printf( "%d, ", Array[i][j] );
    }
  }
}
void main()
{
ShowArrayValue1(  A[0][0] ); // Ersale Meghdar Khone 0,0 + Namayesh in Meghda
ShowArrayValue2( &A[0][0] ); // Ersale Adres   Khone 0,0 + Namayesh Tamam Maghadir
ShowArrayValue3( &A[0][0] ); // Ersale Adres   Khone 0,0 + Namayesh Tamam Maghadir
//ShowArrayValue3(  A       ); // Ersale Adres   Khone 0,0 + Namayesh Tamam Maghadir
ShowArrayValue4( &A[0][0] );
ShowArrayValue5( 5, 4, A );
while(1);
}

 
بیش از این مصدع اوقات نمیشم، فیلم زیر رو هم توصیه میکنم ببینید، فعلا یا علی
رابطه دیپلماسی لبخند و ماجرای ربوده شدن حاج احمد متوسلیان
http://www.aparat.com/v/ACfP3

گروه پرسش و پاسخ الکترونیکی سروش

درباره مهدی دمیرچیلو

جنگ ما فتح قدس را در پی خواهد داشت (امام خمینی) >>>>>> اگر از صدام بگذریم، اگر مسأله قدس را فراموش کنیم، اگر از جنایت های امریکا بگذریم از آل سعود نخواهیم گذشت. ان‌شاالله اندوه دلمان را را در وقت مناسب با انتقام از امریکا و ال سعود برطرف خواهیم کرد و داغ و حسرت حلاوت این جنایت بزرگ را بر دلشان خواهیم گذاشت و با برپایی جشن پیروزی حق بر جنود کفر و نفاق و آزادی کعبه از دست نااهلان و نامحرمان به مسجد الحرام وارد خواهیم شد (امام خمینی)

مطالب مرتبط

  • » عملگر ## و ارسال آدرس تابع در زبان c++

  • » تعریف عملگرها برای struct ها در زبان c++

  • » آموزش کتابخانه نویسی میکروکنترلر

  • » تعریف متغیرهای از نوع ساختار و کلاس

  • » انواع روش ریست نرم افزاری میکرو

  • » آموزش پروژه محور struct در زبان c

  • » حافظه و مدیریت حافظه میکروکنترلر

  • » آموزش ساخت نرم افزار ارتباط سریال با Qt

  • » آموزش کامل typedef و struct

  • » هر آنچه در تعریف متغیر باید بدانیم

یک نظر بدهید

برای صرف‌نظر کردن از پاسخ‌گویی اینجا را کلیک کنید.

آزادی قدس نزدیک است، ان شاء الله

آزادی قدس نزدیک است، ان شاء الله

مطلب ( پروژه ) بعدی …

فعلا دارم رو USB و میکرو LPC کار میکنم، 3 تا موضوع مطرح هستش ( که تو ذهنمه هر3شو برم ) :

1) میکرو در نقش Device ( فعلا محوریت کار من این مورد هستش )
2) میکرو در نقش Host
3) میکرو در نقش OTG

 

و باز 2 تا موضوع مطرح هستش، برا راه اندازی usb دو تا راه داریم ( که تو ذهنمه هر2شو برم ) :

1) استفاده از میکروکنترلر ( فعلا محوریت کار من این مورد هستش که از LPC1768 استفاده میکنم )
2) استفاده از آیسی های مختص اینکار.

 

فعلا کارم با دیتاشیت usb تموم شده، دارم کلاس های usb رو مطالعه میکنم، کلاس cdc رو ماستمالی کردیم و یه پروژه ازش منتشر کردیم، الان رو کلاس HID ریز شدم و دارم مطالعه میکنمش و پروژه ازش میزارم تو سایت.

 

جزئیات داستان رو در لینک زیر میتویند ببینید :

آموزش جامع پروتکول USB

پاسخ به سوالات …

سوالی داشتید در قسمت نظرت مطرح کنید؛ بلد باشم حتما جواب میدم ( اکثر مواقع آنلاین هستم و در کمتر از 1 ساعت جواب میدم )

😉

نظرات اخیر

  • مهرداد : پیدا کردم هر قطعه رو چطوری ببرم آیا میشه همه قطعات رو باهم از یک لا ...

  • حبیب رئیسی : سلام داداش عماد . من میخواستم یک منبع تغذیه ۳۰ ولت ۳۰ آمپر بسازم می ...

  • مهرداد : ممنون از پاسخت 1میخواستم طراحی من هر جای هست origin بره وسط طراحی آ ...

  • mohamamd : سلام . حرف نداری جوان انقلابی . دمت گرم ...

  • yazdani : سلام امکان دانلود برنامه برام فراهم نمیشه میشه راهنماییم کنید متشکر ...

جستجو

bigtheme
  1. پسورد فایل های سایت

    پسورد تمام فایل های سایت الکترونیک

  2. کانال ما در آپارات


ارائه دادن پروژه های سایت به استاد و یا فروختنشون مورد رضایت ما نیست و خلاف شرع و قانون می باشد / کپی کردن مطالب سایت ممنوعه /
  توسط بیگ تم