Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Hỏi về pointer trong function C

09:27 27-04-2017 831 lượt xem 8 bình luận 22:33 28-04-2017

Chào mọi người, em mới học về con trỏ trong C, thì em muốn tạo ra 1 fuction chứa array 2 chiều chưa biết size thì em tra trên stackoverflow thì có 1 người làm như thế này:

void print_arbitrary_2D_array(void *arr, int y, int x)
{
    /* cast to 2D array type */
    double (*p_arr)[y][x] = (double (*)[y][x]) arr;

Cho em hỏi là cái 

double (*p_arr)[y][x] = (double (*)[y][x]) arr;

là gì vậy ạ? Theo em hiểu thì array cũng là pointer vậy sao ta lại tạo pointer 2D? Cái bên phải thì em không biết là cái gì luôn. Mà nó chạy rất ổn

Mong mọi người giúp đỡ

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Trần Thành Vi Thanh Member đã bình luận 22:33 28-04-2017

À hiểu rồi. Mình test trên windows :))) trên visual studio thì chỗ đó báo lỗi nên mình chỉ có nhìn code giải thích theo cách mình hiểu thôi.

Trần Thành Vi Thanh Member đã bình luận 12:12 28-04-2017

Sao mình thấy bên C++ khi khai báo double (*p_arr)[y][x] sẽ báo lỗi chỗ y, x mà bác chủ topic lại bảo chạy ổn nhỉ.

dttr278 đã bình luận 11:49 28-04-2017

con trỏ void có thể trỏ đến mọi loại vùng nhớ và khi dùng thì bạn cần ép kiểu nó.trong trường hợp này bạn ép kểu void* arr về kểu (double (*)[y][x]) để gán cho bên trái

K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 11:23 28-04-2017

cái *p_arr đâu ra vậy bạn ơi

Câu hỏi mới nhất