01/10/2018, 17:16

Lỗi xuất kích thước mảng được truyền vào hàm trong C

Em viết một hàm con để tính toán kích thước của mảng được truyền vào nhưng kết quả luôn ra 8 ( em nghĩ máy em 64bit nên nó truyền địa chỉ là 8 byte) . Khi em xuất kích thước mảng trong chương trình chính thì kết quả mới ra đúng. Có cách nào giúp em có thể xuất mảng chính xác trong chương trình con không ạ. Em cảm ơn.

Tao Không Ngu. viết 19:17 ngày 01/10/2018

HI Nguyễn Tuấn Anh.
Bạn cần lấy kích thước mảng để làm gì ? Không nhầm là có hàm nhưng nói chung là thừa @_@! Vì khi code lúc nào bạn cũng có kích thước mảng rồi.

Nguyễn Tuấn Anh viết 19:21 ngày 01/10/2018

Em code nhúng anh ạ. Giả sử muốn giao tiếp với ECU cần phải truyền đi rất nhiều mảng. Em muốn xây dựng một hàm để tính độ dài mảng, checksum vv… Nếu nhập thủ công bằng tay thì sẽ rất lâu

Tao Không Ngu. viết 19:23 ngày 01/10/2018

HI Nguyễn Tuấn Anh.

  1. Bạn luôn biết kích thước mảng khi lập trình.
  2. Thường thì người ta truyền kích thước gói tin đi kèm.
Nguyễn G Huy viết 19:20 ngày 01/10/2018

Chắc khó để làm việc này lắm bạn, vì theo mình biết sizeof là toán tử dùng đo kích cỡ kiểu dữ liệu,

  • Ở dòng 17, bạn đang đo kích thước của “short int[3]”
  • Còn ở dòng 10, bạn đang đo kích thước của “short int *”
    Cho nên dẫn đến kết quả nhận được là khác nhau…
Nguyễn Tuấn Anh viết 19:29 ngày 01/10/2018

Mình nghĩ dòng 17 là đo kích thước của cả mảng chứ nhể. short int = 2 bytes X 3 phần tử cho ra kết quả là 6 đúng ko

Fight viết 19:27 ngày 01/10/2018

Hi bạn,
Hàm sizeof(ARR) nó sẽ chỉ tính kích thước của con trỏ arr (luôn là 8 bytes với máy 64 bit). Đó là sự khác biệt giữa dùng con trỏ trỏ vào 1 mảng và dùng mảng thông thường.

Bài liên quan
0