Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Mình có 1 hàm foo5 và hàm main như sau
Mọi người cho mình hỏi . tại sao khi mình dùng *n++ thì không thấy giá trị thay đỗi vậy nhỹ . Cảm ơn all
void foo5(int *n)
{
*n++;
cout << *n<<endl;
}
12345
Mình có 1 hàm foo5 và hàm main như sau
int main()
{
int n = 10;
foo5(&n);
cout << n<<endl;
system("pause");
return 0;
}
12345678
Mọi người cho mình hỏi . tại sao khi mình dùng *n++ thì không thấy giá trị thay đỗi vậy nhỹ . Cảm ơn all
Để sử dụng tính năng này, Bạn cần đăng nhập bằng tài khoản Howkteam.
Đăng nhập
Để xem được nội dung và giúp Kteam duy trì hoạt động.
Bạn vui lòng tắt Adblock trên website howkteam.vn nhé!
*n++ khác n++
cách sửa : *n++ -> (*n)++
Trung Nguyễn Văn Để có thể tăng giá trị của 1 biến thì cần lấy dc địa chỉ của con trỏ -> lấy giá trị tại địa chỉ đó -> tăng giá trị.
1 lý do nữa là toán tử " ++ " đc ưu tiên hơn so với toán tử "*"
*n++ thực chất là tăng vị trí của con trỏ chứ không phải là tăng giá trị của biến
Bạn cần học lại về con trỏ *n++ nó trả về địa chỉ của con trỏ thôi
Đã hiểu vấn đề . Cảm ơn mn :D
Phạm Quốc Huy *n++ thành . (*n) ++ . hiểu nôm na là nó sẽ lấy giá trị của n . sau đó ++ lên
:D . . nếu k để dấu ( ) thì nó sẽ lấy n++ trước . rồi nó mới lấy giá trị . nó sẽ chịch chuyển con trỏ trong bộ nhớ lên 4byte .