Tôi có một mảng các giá trị tùy ý, vì vậy tôi đã định nghĩa nó như là một mảng của con trỏ void, vì vậy tôi có thể trỏ đến bất kỳ loại thông tin nào (như int
, mảng ký tự, v.v.). Tuy nhiên, làm thế nào để tôi thực sự gán một int
cho nó?Nếu tôi có một con trỏ void, làm thế nào để đặt một int vào nó?
Đưa ví dụ này khởi tạo:
void* data[10];
int x = 100;
trực giác của tôi sẽ nghĩ này, nhưng điều này đưa ra một lỗi biên dịch:
data[0] = malloc(sizeof(int));
*(data[0]) = x;
Ngoài ra tôi nghĩ về việc sử dụng &x
, nhưng tôi sẽ lấy địa chỉ của một biến cục bộ, mà (theo sự hiểu biết của tôi) sẽ bị xóa sau khi thoát khỏi thủ tục. Vì vậy, nếu tôi có một biến địa phương x
, làm thế nào tôi sẽ nhận được nó vào một loại con trỏ void của biến một cách chính xác?
Hoặc chỉ đơn giản là sử dụng một loạt các công đoàn, và quên malloc –
Thật vậy, điểm tốt. Tôi đã đi với gần nhất với bản gốc. –
Cảm ơn nhưng điều này sẽ làm việc với con trỏ mảng ký tự cũng (char *).Và điều này sẽ không gây ra vấn đề liên kết trên một số nền tảng? Và cuối cùng, nếu tôi có một char [40] nó có vẻ như một sự lãng phí bộ nhớ để dự trữ 40 byte nếu tôi chỉ sẽ sử dụng 4. :-) – pbean