01/10/2018, 10:20
Hỏi về dấu * trong hàm
mong mn thông cảm e không chuyên ngành tin e học bên điện.
Mn cho e hỏi dấu *s khác gì với việc ta chỉ dùng s trong đoạn code sau:
int Step_Speed (unsigned int t, unsigned char chieu,int *s)
{
if (t==0) return 0;
if(chieu==1)
{
stept(*s);
*s=*s+1;
if (*s>3) *s=0;
}
if(chieu==2)
{
stepn(*s);
*s=*s+1;
if (*s>3) *s=0;
}
Delay_ms(t);
return 1;
}
Bài liên quan
s là con trỏ, *s là giá trị của nó
vd: int a = 5; // ở vị trí ô nhớ thứ 10
int *s = a; // *s mới bằng 5, s = 10
Dòng này mang nghĩa: thay đổi giá trị của s cả trong và ngoài hàm
Nếu bạn không có * thì nó sẽ thay đổi vị trí mà thằng s đang trỏ tới, vị trí này nằm ngay sau vị trí cũ và mang giá trị khác *s
int *s
nghĩa là s là var kiểu int* (1 con trỏ, trỏ đến vùng memory int).*s
nghĩa là khử tham chiếu - dereference (truy cập vào vùng nhớ mà con trỏ s trỏ đến)*s có nghĩa là một địa chỉ thuộc về bộ nhớ động nó sẽ chỉ đến nơi có chứa s !
s thì là thông tin về về dữ liệu thuộc về bộ nhớ tĩnh.
Bạn nên xem con trỏ để hiểu tường tận, nhưng nói ngắn gọn là trong C sử dụng con trỏ để truyền tham biến, hay là để thay đổi biến mà caller truyền vào.