30/09/2018, 17:39
Toán tử sizeof trong C
A Đạt ơi,hiện tại em chưa hiểu rõ lắm về toán tử size of,em đã xem video anh day,va tìm hiểu trên mạng rồi nhưng em vẫn chưa năm được vấn đề.A có thể giúp em hiểu rõ bản chất hơn vủa sizeof trong một vài trường hợp được ko ah.
{
char*p;
printf("%d %d",sizeof(*p),sizeof(p));
}
kết quả là 1 4,em không hiểu lắm.em chi hiểu là contro p o dang char.ma char thi dung luong 1 byte,anh có thể nói rõ cặn cẽ cho em đinh nghĩa,và ý nghĩa từng câu lệnh trên được không anh.
Bài liên quan
Kích thước của một phần tử kiểu char là 1 còn kích thước của một con trỏ thì tùy thuộc vào máy. Ta hiểu đơn giản, khi khai báo con trỏ thì phải có một nơi nào đó lưu lại giá trị của con trỏ đó (thực chất ở đây là một số nguyên chỉ số thứ tự trên bộ nhớ). Như vậy, trên máy của bạn
địa chỉ
haygiá trị của con trỏ
có kích thước là 4 nên khi sử dụng toán tửsizeof(p)
sẽ được giá trị là 4.sizeof()
là hàm trả ra dung lượng bộ nhớ được cấp phát cho phần tử ở trongsizeof()
Theo đó
char* p;
là hành vi khai báo một con trỏ để chỉ đến một ô nhớ có kiểu char.sizeof(*p)
là kích thước của ô nhớ mà p đang chỉ tới. Ô nhớ này kiểu chả mặc định giá trị là\0
nên sẽ có giá trị là 1bytes = 8bit.sizeof(p)
là kích thước của ô nhớ đang chứa p. p là kiểu con trỏ nên nó sẽ lưu 1 địa chỉ nhớ. Địa chỉ nhớ này có độ rộng là 4 bytes = 32bit. Nếu bạn dùng bản 64bit thì kích thước này sẽ là 8bytesCái này mình học cũng 4 năm rồi chẳng dùng nên nếu sai sót bỏ quá cho. Bao giờ hỏi về Android mình lại chém mạnh tay…