2012-06-24 65 views
7

Tôi là một người mới tuyệt đối đối với C nên đây có thể là một câu hỏi ngớ ngẩn, cảnh báo!Làm cách nào để lấy địa chỉ của cấu trúc trong C?

Được lấy cảm hứng từ phần tín dụng bổ sung của Exercise 16 trong Tìm hiểu C theo cách cứng, nếu có ai thắc mắc về ngữ cảnh.

Giả sử những hàng nhập khẩu:

#include <stdio.h> 
#include <assert.h> 
#include <stdlib.h> 

Và cho một cấu trúc đơn giản như thế này:

struct Point { 
    int x; 
    int y; 
}; 

Nếu tôi tạo một thể hiện của nó trên đống:

struct Point *center = malloc(sizeof(Point)); 
assert(center != NULL); 
center->x = 0; 
center->y = 0; 

Sau đó, tôi biết tôi có thể in vị trí của cấu trúc trong bộ nhớ như sau:

printf("Location: %p\n", (void*)center); 

Nhưng nếu tôi tạo nó trên ngăn xếp thì sao?

struct Point offCenter = { 1, 1 }; 

Giá trị nằm trong ngăn xếp vẫn có vị trí trong bộ nhớ ở đâu đó. Vậy làm thế nào để tôi có được thông tin đó? Tôi có cần phải tạo một con trỏ đến cấu trúc mới của tôi trên-stack và sau đó sử dụng nó?

EDIT: Rất tiếc, hãy đoán đó là một chút rõ ràng. Cảm ơn Daniel và Clifford! Cho đầy đủ đây là ví dụ sử dụng in &:

printf("Location: %p\n", (void*)&center); 
+8

Sử dụng toán tử địa chỉ, '& offCenter'. –

+1

@DanielFischer: Hãy đăng nó như một câu trả lời :) Ý tôi là, thực sự, Nick phải chọn nhận xét như một câu trả lời hay nhất? –

+0

Vâng, tôi cảm thấy một chút ngớ ngẩn :) Cảm ơn Daniel. Bạn muốn đăng câu trả lời đó và nhận câu trả lời? –

Trả lời

11

Với "địa chỉ-of" hành unary &.

struct Point offCenter = { 1, 1 }; 
struct Point* offCentreAddress = &offCentre ; 
Các vấn đề liên quan