Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ทำไมไม่สามารถใช้ arrow operator (->) กับ gets และ puts ได้


ไม่สามารถอ่าน input เข้า pointer ที่ยังไม่ได้ initialize ได้ ควรสร้างตัวแปร struct แล้วกำหนด address ให้ pointer ก่อนจึงจะใช้ -> เข้าถึงสมาชิกได้

ตัวอย่างที่ถูกต้อง

#include <stdio.h>

struct example {
    char name[20];
};

int main() {
    struct example *ptr;
    struct example e;
    puts("enter name");
    gets(e.name);      // อ่านเข้า e.name โดยตรง
    ptr = &e;          // ชี้ ptr ไปที่ e
    puts(ptr->name);   // ใช้ -> เข้าถึงผ่าน pointer
}

ผลลัพธ์ตัวอย่าง

enter name
Disha
You entered Disha

จุดสำคัญ: ต้องมีตัวแปรจริง (e) ก่อน จึงจะชี้ pointer ไปที่มันได้ ใช้ gets(e.name) อ่านเข้า struct โดยตรง แล้วค่อยชี้ pointer