ฉันกำลังดำเนินการสร้างตารางแฮช ฉันใช้โครงสร้างสำหรับความจุ จำนวนคีย์ ความถี่ และตัวคีย์เอง นี่คือรหัสของฉันสำหรับการเริ่มต้น struct:
htable htable_new(int capacity) {
htable result = emalloc(sizeof *result);
result->capacity = capacity;
result->frequencies = emalloc(capacity * sizeof result->frequencies[0]);
result->keys = emalloc(capacity * sizeof result->keys[0]);
result->frequencies = 0;
result->keys = NULL;
return result;
}
ตอนนี้จากความเข้าใจของฉัน char** array เป็นตัวชี้ไปยังอาร์เรย์ของพอยน์เตอร์ (ประเภท char)? ดังนั้นเมื่อฉันจัดสรรหน่วยความจำ การใช้คีย์[0]จะถูกต้องหรือไม่ ฉันคิดว่านี่เป็นเพียงขนาดของตัวชี้ถ่านใช่ไหม ซึ่งนำไปสู่คำถามต่อไปของฉันว่าเมื่อใดที่ฉันตั้งค่าคีย์ในอาร์เรย์ (ซึ่งเห็นได้ชัดว่าอยู่ในฟังก์ชันอื่น) ฉันจะจัดสรรหน่วยความจำให้กับแต่ละดัชนีตามขนาดของสตริงที่ฉันป้อนก่อนจัดเก็บหรือไม่
i.e. h->keys[index] = emalloc(sizeof(str)
ขอบคุณสำหรับคำตอบของคุณ!