Trang 2 trên tổng số 2 Đầu tiênĐầu tiên 12
Từ 11 tới 15 trên tổng số 15 kết quả

Đề tài: [C++]hehe Các anh ơi

  1. #11
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Mặc định [C++]hehe Các anh ơi

    Trích dẫn Nguyên bản được gửi bởi xtrung Xem bài viết
    Các anh ở diễn đàn giải thích em phát:
    Tại sao phải dùng đến con trỏ?? hehehe.
    Con trỏ là linh hồn của C. Chưa học con trỏ tức là chưa học C

  2. #12
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Trích dẫn Nguyên bản được gửi bởi xtrung Xem bài viết
    Các anh ở diễn đàn giải thích em phát:
    Tại sao phải dùng đến con trỏ?? hehehe.
    Học con trỏ để áp dụng thực tế đó mà ! Má cho 13T không đủ phải xin thêm 80T nữa để mua đủ chiếc SH nếu không biết trỏ là không xin thêm được đâu

    OoShinHaoO

  3. #13
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Hơ hơ chính xác Nhân tiện đây kid muốn đưa cái này ra cho anh em thảo luận

    Giả sử cấp phát có con trỏ int *s= new int [15];
    bi giờ lại muốn hủy đi 5 thôi có nghĩa là phải thu lại chỉ còn[10] thôi không được chơi cấp phát mảng 10 copy qua rồi delete s . He he Anh em coi thử nào .

  4. #14
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Bó tay, không thể làm được, vì phụ thuộc vào cơ chế quản lý memory của OS và của C RTL. Nhưng hầu hết là dùng hàm realloc, và thông thường realloc return lại pointer ban đầu khi co lại, nhưng không chắc, vì cũng có thể trả về pointer #, tức bên trong hàm realloc, nó có gọi tới các hàm quản lý memory của OS hay CRTL, và các hàm này có thể cấp phát memory mới, copy nội dung cũ qua. Mục đích là để defrag free memory list dành cho cấp phát memory mới.

  5. #15
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Hơ hơ có hiểu ý của TQN và cũng nói thêm vụ realloc này .

    Bình thường nếu ta có int *s = (int) malloc ( sizeof(int)*15);
    thì khi ta cần cấp phát thêm 5 khoảng nữa thì có thể dùng :
    s = (int) realloc(s,sizeof(int)*20) lúc này 15 giá trị tại vùng nhớ ban đầu là được sao từ cái cũ qua còn cái 5 cái tiếp theo này thì ngẫu nhiên .
    Bi giờ theo suy nghĩ thì ta có thể chuyển lại còn 10 bằng cách .
    s = (int) realloc(s,sizeof(int)*10); ta tự nghĩ là nó sẽ sao chép 10 giá trị ban đầu vào còn 5 cái còn lại thì bỏ nhưng mà không phải Trình biên dịch sẽ báo lỗi liền .

    Tất nhiên là có thể giải quyết bằng việc tạo thêm một con trỏ khác , sao qua rồi hủy s nhưng như thế thì " chả còn gì để bàn" nữa rồi .

    Vấn đề là làm sao mà chỉ trên s thôi , liên quan đến con trỏ s thôi , mà có thể giải quyết chuyện này .

Các đề tài tương tự

  1. CÁ ĐỘ BÓNG ĐÁ TẠI EURO 2012 đây!!....hehe!!
    Gửi bởi mrtranvtpro trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 08-06-2012, 08:09 PM
  2. Trả lời: 0
    Bài viết cuối: 16-03-2012, 07:05 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