#include <stdio.h>
int* XXX(double *yy)
return (int*)AA
int main()
{
return 0;
}
giả sử có chương trình trên thì hàm trên nó sẽ trả về con trỏ trỏ đến AA, hay là địa chỉ của AA, hay là địa chỉ của con trỏ vậy
#include <stdio.h>
int* XXX(double *yy)
return (int*)AA
int main()
{
return 0;
}
giả sử có chương trình trên thì hàm trên nó sẽ trả về con trỏ trỏ đến AA, hay là địa chỉ của AA, hay là địa chỉ của con trỏ vậy
1 trả vê một con trỏ.
2 gia trị con trỏ AA sau ep kểu.
vậy (int*)AA đang là trả về con trỏ trỏ dến AA hay sao bạn
Không nhé, nó ép kiểu của AA sang kiểu con trỏ (int*)
Bạn cứ thử compile, nếu compiler báo lỗi không thể ép, có nghĩa là kiểu ban đầu của AA không thể ép sang một con trỏ kiểu int*.
Thường thì ép kiểu chỉ có tác dụng đối với một dữ liệt cùng loại (không nhất thiết cùng kiểu) như con trỏ. Ép kiểu này nó thường dùng trong C và được coi là ép kiểu không an toàn.
Nếu dùng C++ thì nên tìm hiểu hết về các loại hàm ép kiểu:
– Một số thường dùng:
static_cast<>()
const_cast<>()
dynamic_cast<>()
reinterpret_cast<>() -- Kiểu này ép theo kiểu bắt buộc gần giống C
vậy là nó trả về 1 con trỏ kiểu int* có tên AA ok thanks mình hiểu rồi tại vì đang học kĩ thuật lập trình nên hơi bí phần lấy dữ liệu lưu trữ vật lí ^^
Bản thân AA phải là con trỏ trước, kiểu char chẳng hạn, bạn ép nó thành con trỏ int thì về sau khi lấy giá trị, nó ko trả về kí tự nữa mà trả về mã ascii của kí tự đó. Ví dụ thôi nhé
Ép kiểu về bản chất là thực hiện data conversion, AA từ con trỏ hàm được chuyển sang con trỏ int, nhưng con số thể hiện thì không thay đổi, còn kiểu thì bị thay đổi (type thì để compiler nó hiểu và biên dịch, còn xài sao là tùy ở bạn).
C/C++ tự do quá nó thế, lập trình viên phải vô cùng trách nhiệm.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?