01/10/2018, 00:27
Return giá trị của con trỏ trong một hàm trong C
Em có câu này mọi người thử thảo luận, đoán xem kết quả sẽ in ra giá trị gì ạ.
#include <stdio.h>
#include <stdlib.h>
int function (int *val)
{
return *(val)++;
}
int main()
{
int a = 4;
int b = 3;
b = function( &a );
printf ("%d
%d
" , a, b);
return 0;
}
Bài liên quan
4 4.
Khi gọi hàm function thì val sẽ trỏ tới địa chỉ của biến a
*(val)++ : do ++ có độ ưu tiên cao hơn * nên thứ tự sẽ là *(val++) nhưng do val++ thì sau khi thực hiện return thì val trỏ tới ô nhớ sau a, nên giá trị trả về của hàm function vẫn là giá trị của a (*val) là 4 => b = 4.
Giá trị a thì vẫn không đổi tại sau hàm val++ thì thằng val trỏ đến ô nhớ sau a thôi chứ không ảnh hưởng a
Nếu test thử (*val)++ thì bạn sẽ thấy là b = 4 và a = 5 tại toán tử ++ thực hiên sau nên hàm function trả về giá trị của a (*a) và (*val)++ : giá trị a tăng sau lệnh return.