Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Hubungan Antara Array dan Pointer

Hubungan Antara Array dan Pointer

Dalam tutorial ini, Anda akan belajar tentang hubungan antara array dan pointer dalam pemrograman C. Anda juga akan belajar mengakses elemen array menggunakan pointer.

Sebelum Anda mempelajari tentang hubungan antara array dan pointer, pastikan untuk memeriksa dua topik berikut:


Hubungan Antara Array dan Pointer

Array adalah blok data berurutan. Mari kita menulis program untuk mencetak alamat elemen array.

#include <stdio.h>
int main() {
   int x[4];
   int i;

   for(i = 0; i < 4; ++i) {
      printf("&x[%d] = %p\n", i, &x[i]);
   }

   printf("Address of array x: %p", x);

   return 0;
}

Keluaran

&x[0] = 1450734448
&x[1] = 1450734452
&x[2] = 1450734456
&x[3] = 1450734460
Address of array x: 1450734448

Ada perbedaan 4 byte antara dua elemen berurutan dari array x . Itu karena ukuran int adalah 4 byte (pada kompiler kami).

Perhatikan bahwa, alamat &x[0] dan x adalah sama. Itu karena nama variabel x menunjuk ke elemen pertama larik.

Dari contoh di atas, jelas bahwa &x[0] setara dengan x . Dan, x[0] setara dengan *x .

Demikian pula,

  • &x[1] setara dengan x+1 dan x[1] setara dengan *(x+1) .
  • &x[2] setara dengan x+2 dan x[2] setara dengan *(x+2) .
  • ...
  • Pada dasarnya, &x[i] setara dengan x+i dan x[i] setara dengan *(x+i) .

Contoh 1:Pointer dan Array

#include <stdio.h>
int main() {

  int i, x[6], sum = 0;

  printf("Enter 6 numbers: ");

  for(i = 0; i < 6; ++i) {
  // Equivalent to scanf("%d", &x[i]);
      scanf("%d", x+i);

  // Equivalent to sum += x[i]
      sum += *(x+i);
  }

  printf("Sum = %d", sum);

  return 0;
}

Saat Anda menjalankan program, outputnya adalah:

Enter 6 numbers: 2
3
4
4
12
4
Sum = 29 

Di sini, kita telah mendeklarasikan sebuah array x dari 6 elemen. Untuk mengakses elemen array, kita telah menggunakan pointer.


Dalam kebanyakan konteks, nama array membusuk menjadi pointer. Dengan kata sederhana, nama array diubah menjadi pointer. Itulah alasan mengapa Anda dapat menggunakan pointer untuk mengakses elemen array. Namun, Anda harus ingat bahwa pointer dan array tidak sama .

Ada beberapa kasus di mana nama array tidak berubah menjadi pointer. Untuk mempelajari lebih lanjut, kunjungi:Kapan nama array tidak berubah menjadi pointer?


Contoh 2:Array dan Pointer

#include <stdio.h>
int main() {

  int x[5] = {1, 2, 3, 4, 5};
  int* ptr;

  // ptr is assigned the address of the third element
  ptr = &x[2]; 

  printf("*ptr = %d \n", *ptr);   // 3
  printf("*(ptr+1) = %d \n", *(ptr+1)); // 4
  printf("*(ptr-1) = %d", *(ptr-1));  // 2

  return 0;
}

Saat Anda menjalankan program, outputnya adalah:

*ptr = 3 
*(ptr+1) = 4 
*(ptr-1) = 2

Dalam contoh ini, &x[2] , alamat elemen ketiga, ditetapkan ke ptr penunjuk. Oleh karena itu, 3 ditampilkan saat kami mencetak *ptr .

Dan, mencetak *(ptr+1) memberi kita elemen keempat. Demikian pula, mencetak *(ptr-1) memberi kita elemen kedua.


Bahasa C

  1. Apa hubungan antara data besar dan komputasi awan?
  2. C++ Pointer dan Array
  3. C Pass Alamat dan Pointer
  4. C struct dan Pointer
  5. Hubungan antara tegangan dan arus pada motor listrik
  6. Hubungan Antara IoT dan Edge Computing
  7. Perbedaan Antara SCADA dan HMI
  8. Perbedaan Motor DC dan AC
  9. Perbedaan antara mematri dan menyolder
  10. Perbedaan mesin 2 tak dan 4 tak