2016-10-04 14 views
5

Trong C, các biến sau được xác định rõ?Khởi tạo biến với con trỏ tới biến đó

void* ptr = &ptr; 
void* array[1] = {array}; 

Nói cách khác, bạn có thể sử dụng địa chỉ của biến để khởi tạo biến đó không? Nó dường như làm việc với trình biên dịch GCC, nhưng tôi chỉ muốn biết liệu nó có phải là thứ mà tôi có thể dựa vào hay không.

Chỉnh sửa: đây thực chất là một bản sao của Defining a pointer to refere to same variable name's reference?

+0

Tại sao bạn cho rằng nó có thể không hoạt động? Trông hợp pháp với tôi. Nó giống như để có số hộp có chứa số riêng của họ được viết trên một mảnh giấy bên trong ... –

+0

Hoặc bạn đang lo lắng về biến không có địa chỉ tại initializer thời gian được đánh giá? –

+0

"Được xác định rõ" có thể kéo dài nó, nhưng tôi không thể bất cứ điều gì dứt khoát nói rằng nó sẽ không xác định. 'void *' là đặc biệt, nhưng tôi không biết liệu tính đặc biệt đó có kéo dài đến 'void **' hay không. –

Trả lời

0

nó phải được hợp pháp. Vì ptr không phải là const, giá trị khởi tạo của nó không cố định trong vùng mã .text, và vì vậy nó phải được biết trong thời gian chạy và được ghi bằng RAM với giá trị chính xác.

Các vấn đề liên quan