#include <stdio.h>
const int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
Có đầu ra sau đây:Biến được khởi tạo toàn cục được khai báo là "const" chuyển đến phân đoạn văn bản, trong khi các biến được khai báo "Tĩnh" đi đến phân đoạn dữ liệu. Tại sao?
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
5133 272 24 5429 1535 a.out
Trong đó:
#include <stdio.h>
static int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
Có đầu ra sau đây:
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
1080 4292 24 5396 1514 a.out
Khi mảng được uninitialized - nó một lần nữa đi vào văn bản phân đoạn cho "const" và BSS cho "tĩnh".
Biến là toàn cầu và có thể truy cập được từ bất kỳ nơi nào trong tệp thực thi, là một phần của (vì không có "tĩnh"), nhưng với biến của nó, tôi không biết tại sao nó được đặt trong phân đoạn văn bản thay vì dữ liệu phân đoạn?
+1: Câu hỏi hay. Bạn có thể muốn mở rộng nó thành 'static const'. – Arun