Con trỏ và cấu trúc trong C++

Trong bài viết này, bạn sẽ tìm thấy các ví dụ có liên quan sẽ giúp bạn làm việc với các con trỏ để truy cập dữ liệu trong một cấu trúc.

Một con trỏ biến thể được tạo ra không chỉ đối với các loại bản địa thích ( intfloatdoublevv), nhưng họ cũng có thể được tạo ra cho người sử dụng các loại được xác định như cấu trúc .

Nếu bạn không biết con trỏ là gì, hãy truy cập con trỏ C ++ .

Đây là cách bạn có thể tạo con trỏ cho các cấu trúc:

#include <iostream>
using namespace std;

struct temp {
    int i;
    float f;
};

int main() {
    temp *ptr;
    return 0;
}

Chương trình này tạo ra một ptr con trỏ của kiểu cấu trúc tạm thời .

Ví dụ: Con trỏ đến cấu trúc

#include <iostream>
using namespace std;

struct Distance {
    int feet;
    float inch;
};

int main() {
    Distance *ptr, d;

    ptr = &d;
    
    cout << "Enter feet: ";
    cin >> (*ptr).feet;
    cout << "Enter inch: ";
    cin >> (*ptr).inch;
 
    cout << "Displaying information." << endl;
    cout << "Distance = " << (*ptr).feet << " feet " << (*ptr).inch << " inches";

    return 0;
}

Đầu ra

Enter feet: 4
Enter inch: 3.5
Displaying information.
Distance = 4 feet 3.5 inches

Trong chương trình này, một biến con trỏ ptr và biến bình thường d của cấu trúc kiểu Khoảng cách được xác định.

Địa chỉ của biến d được lưu vào biến con trỏ, tức là ptr đang trỏ đến biến d . Khi đó, hàm thành viên của biến d được truy cập bằng con trỏ.

Ghi chú:

  • Since pointer ptr is pointing to variable d in this program, (*ptr).inch and d.inch are equivalent. Similarly, (*ptr).feet and d.feet are equivalent.
  • However, if we are using pointers, it is far more preferable to access class members using the -> operator. This is because the . operator has a higher precedence than the * operator. Hence, we enclose *ptr in brackets when using (*ptr).inch. Because of this, it is easier to make mistakes if both operators are used together in a single code.
     ptr->feet is same as (*ptr).feet ptr->inch is same as (*ptr).inc








Gõ tìm kiếm nhanh...