30/09/2018, 21:45
Hàm trong C khi dùng và không dùng con trỏ
int value1(int a)
{
a = a+2;
}
int value2(int *p)
{
*p=*p+5;
}
int main()
{
int b=10;
value1(b);
printf("%d
",b);
value2(&b);
printf("%d",b);
return 0;
}
mọi người cho mình hỏi sao hàm value1 khi in giá trị của b lại không thay đổi mà phải dùng con trỏ thì nó mới thay đổi giá trị
Bài liên quan
Thực chất 1 biến bình thường khi gọi hàm xử lý nó thì chương trình sẽ tạo 1 bản sao của biến đó qua cái hàm cần xử lý, sau khi xử lý xong nó sẽ trả lại cho hàm main kết quả.
Còn con trỏ là 1 biến có thể trỏ đi lung tung trong bộ nhớ nên khi xử lý nó ở hàm khác thì kết quả của nó sẽ thay đổi ngay trong hàm main sau khi xử lý.
Đoạn code của bạn thì hai hàm
value1
vàvalue2
có kiểuint
thì sao không return nhỉ ? Còn hàmvalue2
trả về giá trị nên phải để như vầy:*p = *p + 5
hoặc đổi thànhint* value2(int *p)