Sử dụng biến tham chiếu để duyệt các phần tử sử dụng for-each?

Một biến tham chiếu khi được khai báo phải được khởi tạo luôn cho nó một đối tượng, và biến đó sẽ tham chiếu tới một đối tượng duy nhất khi khởi tạo cho nó một đối tượng ban đầu. Vậy khi mình sử dụng vòng lặp for-each để duyệt các phần tử trong một mảng thì biến tham chiếu vẫn có thể duyệt hết mảng. Ý mình ở đây là biến tham chiếu chỉ tham chiếu đến đối tượng duy nhất trong khi đó khi duyệt mảng dùng for-each thực sự nó vẫn có thể duyệt hết mảng được

using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	int a[] = {1, 2, 3, 4, 5};
	for (int& x: a) {
		cout << x << endl;
	}
	return 0;
}

Mình nghĩ nó cũng giống như vầy thôi:

int main()
{
	int a[] = {1, 2, 3, 4, 5};
    for (int i = 0 ; i < 5; i++) {
        int&x = a[i];
        cout << x << endl;
    }
	return 0;
}

int &x nó khác nhau cho mỗi lần lặp, vì hết scope là nó init lại. Dễ hình dung hơn thì nó giống vầy:

int main()
{
	int a[] = {1, 2, 3, 4, 5};

	{
		int&x = a[0];
		cout << x << endl;
	}

	{
		int&x = a[1];
		cout << x << endl;
	}

	{
		int&x = a[2];
		cout << x << endl;
	}

	{
		int&x = a[3];
		cout << x << endl;
	}

	{
		int&x = a[4];
		cout << x << endl;
	}

	return 0;
}
2 Likes

Boy, every programming language is like human language and evolves with time. A list (or array) used to be: “for (int i = 0; i < n; i++)”. Today it is “for (int i : list)” and working with i depends on the way of addressing: directly or by addressing.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?