Latest web development tutorials

C ++ pointer vs Array

C ++ pointer C ++ pointer

Pointer dan array yang erat terkait. Bahkan, pointer dan array dalam banyak kasus yang dipertukarkan. Sebagai contoh, sebuah pointer ke awal dari array, array dapat diakses dengan menggunakan pointer aritmetika atau indeks array. Perhatikan program berikut:

#include <iostream>
 
using namespace std;
const int MAX = 3;
 
int main ()
{
   int  var[MAX] = {10, 100, 200};
   int  *ptr;
 
   // 指针中的数组地址
   ptr = var;
   for (int i = 0; i < MAX; i++)
   {
      cout << "Address of var[" << i << "] = ";
      cout << ptr << endl;
 
      cout << "Value of var[" << i << "] = ";
      cout << *ptr << endl;
 
      // 移动到下一个位置
      ptr++;
   }
   return 0;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Address of var[0] = 0xbfa088b0
Value of var[0] = 10
Address of var[1] = 0xbfa088b4
Value of var[1] = 100
Address of var[2] = 0xbfa088b8
Value of var[2] = 200

Namun, pointer dan array tidak sepenuhnya dipertukarkan. Sebagai contoh, perhatikan program berikut:

#include <iostream>
 
using namespace std;
const int MAX = 3;
 
int main ()
{
   int  var[MAX] = {10, 100, 200};
 
   for (int i = 0; i < MAX; i++)
   {
      *var = i;    // 这是正确的语法
      var++;       // 这是不正确的
   }
   return 0;
}

Operator pointer * diterapkan untuk var bisa diterima, tetapi nilai modifikasi var adalah ilegal. Hal ini karena var adalah pointer ke awal array konstan, itu tidak bisa dijadikan nilai kiri.

Karena nama array sesuai dengan pointer konstan, mereka tidak mengubah nilai dari array, Anda masih dapat menggunakan formulir pointer ekspresi. Misalnya, berikut ini adalah pernyataan yang valid, var [2] 500 tugas:

*(var + 2) = 500;

Pernyataan di atas adalah valid, dan dapat berhasil mengkompilasi, karena var tidak berubah.

C ++ pointer C ++ pointer