Hỏi đáp

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

Pointer parameter - Tham biến trong C++

00:48 09-08-2017 746 lượt xem 5 bình luận 22:29 08-11-2017
void foo5(int *n)
{
	*n++;
	cout << *n<<endl;
}

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;
}

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

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
K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 02:19 09-08-2017

*n++ khác n++ 
cách sửa : *n++ -> (*n)++

Copy Writing Kteam đã bình luận 09:43 09-08-2017

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

K-3 đã bình luận 22:29 08-11-2017

Bạn cần học lại về con trỏ *n++ nó trả về địa chỉ của con trỏ thôi 

K2m58 đã bình luận 11:48 09-08-2017

Đã hiểu vấn đề . Cảm ơn mn :D 

Copy Writing Kteam đã bình luận 09:43 09-08-2017

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 .

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