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 đỡ
À 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.
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ỉ.
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
cái *p_arr đâu ra vậy bạn ơi