Computer >> Máy Tính >  >> Lập trình >> lập trình C

"Void *" khác nhau như thế nào trong C và C ++?

Trong phần này, chúng ta sẽ thấy sự khác biệt giữa con trỏ void trong C và con trỏoid trong C ++. Cả hai đều là con trỏ void nhưng trong C một con trỏ void có thể được gán cho bất kỳ kiểu con trỏ nào, nhưng trong C ++, chúng ta không thể làm điều đó. Trong C ++, chúng ta phải đánh máy rõ ràng để gán.

Trong ví dụ sau, những dòng này có thể được thực thi khi chúng ta đang viết một số mã trong C.

void *p;
int *int_ptr = p;

Điều này sẽ hoạt động tốt trong C. Bây giờ nếu chúng tôi sử dụng malloc () để cấp phát một số không gian bộ nhớ, wecan sử dụng typecast rõ ràng, nhưng nếu chúng tôi không làm điều đó, nó cũng sẽ ổn. Hàm malloc () trả về con trỏ void.

int *int_ptr = malloc(sizeof(int) * 10);

Ở đây, con trỏ void trả về được chuyển đổi hoàn toàn thành con trỏ kiểu số nguyên.

Bây giờ, nếu chúng ta muốn chạy cùng một chương trình trong C và C ++, chúng ta nên đánh máy con trỏ một cách rõ ràng.

void *p;
int *int_ptr = (int *) p;
int *arr_ptr = (int *) malloc(sizeof(int) * 10);