Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Thư viện <mem.h> và các hàm của nó

  1. #1
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    17

    Question Thư viện <mem.h> và các hàm của nó

    Ai biết cái thư viện <mem.h> trong C có tác dụng gì không ạ.
    Em có 1 cái bài tập có sử dụng thư viện này, trong đó có 1 hàm tên memset. Hàm memset đấy có nghĩa là gì, hic. Ai biết giúp em cái nhé.

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Xử lý bộ nhớ (memory)

    C Code:
    1. void *memset (void *buffer, short c, unsigned long num);

    memset() thiết lập num byte đầu của buffer với giá trị c
    None!

  3. #3
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    17

    Bạn có thể nói rõ hơn tí được không. Giả sử mình có 1 khai báo thế này:
    int a[100];
    thì câu lệnh sau nó có tác dụng gì
    memset(a, 1, sizeof(a));
    Mong bạn chỉ rõ cho mình.

  4. #4
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi Cloud Strife Xem bài viết
    Bạn có thể nói rõ hơn tí được không. Giả sử mình có 1 khai báo thế này:
    int a[100];
    thì câu lệnh sau nó có tác dụng gì
    memset(a, 1, sizeof(a));
    Mong bạn chỉ rõ cho mình.
    xem ra vẫn chưa hiểu vấn đề nhỉ.

    1. thư viện <mem.h> đã deprecated, không khuyến khích sử dụng, hãy sử dụng các hàm xử lý memory trong <string.h>

    2. câu lệnh của cậu ở trên hoàn toàn sai.

    Tôi viết lại chính xác định nghĩa của nó :

    C Code:
    1. void * memset ( void * ptr, int value, size_t num );

    ptr: con trỏ tới một khối nhớ (block of memory)
    value: giá trị khởi tạo cho khối nhớ đó (initial value)
    num: số lượng phần tử trong khối nhớ cần khởi tạo (number of element)

    Ví dụ: với cái ở trên, tôi muốn khởi tạo 100 phần tử trong mảng a ở trên với giá trị là 0
    C Code:
    1. int a[100];
    2. memset( a, 0, 100 );
    => sau memset() tất cả các giá trị trong mảng a đều được khởi tạo và có cùng 1 giá trị là 0

    Câu hỏi đặt ra tại sao không dùng vòng lặp mà dùng memset() ?
    - Trả lời:
    + memset() là một hàm viết type-safe trên memory sẵn trên các thư viện của C, vì thế tốc độ sẽ nhanh hơn sử dụng vòng lặp thủ công.

    Lời khuyên của các C coder của GNU, đều sử dụng các hàm memxxx nếu cần thiết và áp dụng được.
    Tất cả các mã nguồn OSS, các thành phần khởi tạo (initial) đều sử dụng memset().
    None!

  5. #5
    Ngày gia nhập
    12 2007
    Bài viết
    29

    memset dùng cho int dc sao ?
    Edit : Vẫn dùng dc nhưng phải viết vậy mới đúng.
    Code:
    int a[100];
    memset( a, 0, sizeof(a) );
    Vì memset dùng size của kiểu char.
    Đã được chỉnh sửa lần cuối bởi trinitrotoluen : 28-08-2009 lúc 03:41 PM.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn