สิ่งที่ฉันรู้คือตัวแปรส่วนกลางและตัวแปรคงถูกเก็บไว้ใน.data
เซ็กเมนต์และข้อมูลที่ไม่ได้กำหนดค่าเริ่มต้นจะอยู่ใน.bss
เซ็กเมนต์ สิ่งที่ฉันไม่เข้าใจคือเหตุใดเราจึงมีเซ็กเมนต์เฉพาะสำหรับตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้น หากตัวแปรที่ไม่ได้เริ่มต้นมีค่าที่กำหนดในขณะรันตัวแปรจะยังคงอยู่ใน.bss
เซ็กเมนต์เท่านั้นหรือไม่
ในโปรแกรมต่อไปนี้ a
อยู่ใน.data
กลุ่มและb
อยู่ใน.bss
กลุ่ม ถูกต้องหรือไม่ กรุณาแก้ไขฉันหากความเข้าใจของฉันไม่ถูกต้อง
#include <stdio.h>
#include <stdlib.h>
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
int b[20]; /* Uninitialized, so in the .bss and will not occupy space for 20 * sizeof (int) */
int main ()
{
;
}
นอกจากนี้ให้พิจารณาโปรแกรมต่อไปนี้
#include <stdio.h>
#include <stdlib.h>
int var[10]; /* Uninitialized so in .bss */
int main ()
{
var[0] = 20 /* **Initialized, where this 'var' will be ?** */
}