Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 23 kết quả

Đề tài: [Kĩ thuật phân tích vấn đề] Giải thích ý nghĩa của dòng lệnh khai báo int(*)

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Mặc định [Kĩ thuật phân tích vấn đề] Giải thích ý nghĩa của dòng lệnh khai báo int(*)

    Để tiếp túc sê ri đố vui by lang man, hôm nay (ko rảnh lắm nhưng) mình xin đưa ra 1 bài tập để nâng cao tay nghề phân tích vấn đề của các bạn.
    Mình chỉ là 1 noob thôi, vì thế nếu bạn nào thấy chán ghét hoặc ko thích mong đừng giận mình, ghét mình nha, mình hoàn toàn có thiện ý chứ ko hề mang tính thách thức ai cả.

    Đề này mình xin nói luôn, (vì sợ vi phạm bản quyền tác giả tác phẩm) câu a là do mình ra đề, câu b là mình nêu 1 bài toán cổ khá hay của C việt ra vì mình thấy nó hay mà ý nghĩa(tạm thời xin giấu tên và thay đổi 1 chút để ko bị các cỗ máy tìm kiếm phát hiện ra)


    Thôi, ko trình bày dài dòng . Đề bài :


    Giải thích ý nghĩa câu lệnh khai báo sau


    a. int a=((int(*)(int a=100,int b=1000))861987)(3,5);

    b.
    char*(*((*ab[19][87])()))(char**ab,int n);


    Yêu cầu:
    + nói đúng ý nghĩa của câu lệnh : 3 điểm
    + phân tích đúng logic, có cách phân tích hay, .... : 7 điểm
    + điểm chấm trên từng câu a,b riêng chứ ko phải là chung cả 2 câu

    More : điểm chấm sẽ dựa vào quá trình phân tích, phân tích hay, đúc rút được 1 phần vấn đề vẫn có thể có điểm cao, toàn bộ phụ thuộc vào logic tư duy và kĩ năng phân tích của bạn



    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Thật sự đây ko phải là 1 bài toán đơn giản chút nào, đúng!
    để hiểu được toàn code này thì phải nói là như nào nhỉ, chả cần, chả hiểu, chả quan tâm, chả để làm gì cả............!!!!!!!

    nhưng xin bạn đừng nghĩ như thế, ở đây mình ko muốn chỉ bạn cách dùng, hay phát triển cái đoạn code kia, chả để làm gì cả, nó quá phức tạp
    cái mình muốn đó là kĩ năng ta bóc tách để tìm ra lời giải đáp cho những gì mình chưa biết. Đây là 1 kĩ năng rất quan trọng, cũng là rèn luyện cho bạn về sự tự tin khi giải quyết vấn đề nữa.
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  3. #3
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    846

    đề này khó thật đấy >"<
    theo em thì câu à dùng để gán 2 giá trị 3 và 5 cho biến a, đúng không ạ

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi aydada Xem bài viết
    đề này khó thật đấy >"<
    theo em thì câu à dùng để gán 2 giá trị 3 và 5 cho biến a, đúng không ạ
    1. có suy đoán, tốt, suy đoán là 1 quá trình của tư duy

    2. ko phải em
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Các bạn hãy đặt bất kì câu hỏi nào về vấn đề này mình sẽ trợ giúp các bạn
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  6. #6
    Ngày gia nhập
    09 2010
    Bài viết
    207

    Mặc định [Kĩ thuật phân tích vấn đề] Giải thích ý nghĩa của dòng lệnh khai báo int(*)

    C++ Code:
    1. (int(*)(int a=100,int b=1000))
    Em đoán đoạn này là khai báo một abstract function pointer

    C++ Code:
    1. 861987
    Em không hiểu nó chỗ này. Tại sao lại có một hằng số ở đó mà không có toán tử nào cho hằng số đó với biểu thức trên nhỉ.

    C++ Code:
    1. (3,5)
    3,5 có phải là paramters cho cái abstract function ở trên ko nhỉ ?

    Em dùng devc không biên dịch được dòng này. Nó báo lỗi là default argument chỉ dành cho function bình thường thôi (microsoft thì hỗ trợ default argument cho function pointer)
    C++ Code:
    1. while ( ! Love(I, You) )
    2.     try { Send(I, You, ..... ); .....; } catch (LoveException lvex) { fix_error(); }
    3. Marry ( I, You );
    4. while ( true )
    5.     try { ....together; } catch (Exception ex) { remove_bad_things(); }

  7. #7
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Xin mạn phép phân tích câu b
    b. char*(*((*ab[19][87])()))(char**ab,int n);
    bóc tách ra
    *ab[19][87])()
    là 1 mảng con trỏ hàm mỗi phần tử có thể trỏ tới hàm có đối số bất định, hàm này có kiểu char** nhỉ?
    mảng này được trỏ đến bởi một con trỏ hàm khác kiểu char *có thể trỏ tới hàm có đối đầu vào là (char**ab,int n)

    Cũng chưa biết nhiều về con trỏ hàm lắm, hi vọng đc 2 đ

    câu a:
    chưa rõ chỗ sao lại có 2 int a?

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi kenzso Xem bài viết
    C++ Code:
    1. (int(*)(int a=100,int b=1000))
    Em đoán đoạn này là khai báo một abstract function pointer

    C++ Code:
    1. 861987
    Em không hiểu nó chỗ này. Tại sao lại có một hằng số ở đó mà không có toán tử nào cho hằng số đó với biểu thức trên nhỉ.

    C++ Code:
    1. (3,5)
    3,5 có phải là paramters cho cái abstract function ở trên ko nhỉ ?

    Em dùng devc không biên dịch được dòng này. Nó báo lỗi là default argument chỉ dành cho function bình thường thôi (microsoft thì hỗ trợ default argument cho function pointer)
    có sáng kiến,
    có ý tưởng,
    có tìm tòi,
    có phát hiện,

    nhưng chưa được ở chỗ, suy đoán thì hãy hành động để tìm hiểu cái suy đoán đó đúng hay ko ?
    bỏ qua sự khó tính của các trình biên dịch đi


    gợi ý : Làm thế nào để cho con voi vào trong tủ lạnh ?! Đơn giản hóa vấn đề luôn có lợi

    Trích dẫn Nguyên bản được gửi bởi trungkien45 Xem bài viết
    Xin mạn phép phân tích câu b
    b. char*(*((*ab[19][87])()))(char**ab,int n);
    bóc tách ra
    *ab[19][87])()
    là 1 mảng con trỏ hàm mỗi phần tử có thể trỏ tới hàm có đối số bất định, hàm này có kiểu char** nhỉ?
    mảng này được trỏ đến bởi một con trỏ hàm khác kiểu char *có thể trỏ tới hàm có đối đầu vào là (char**ab,int n)

    Cũng chưa biết nhiều về con trỏ hàm lắm, hi vọng đc 2 đ

    câu a:
    chưa rõ chỗ sao lại có 2 int a?
    có kinh nghiệm nhưng thiếu sự sẵn sàng. nên bắt tay vào mò mẫm luôn thôi


    @all : chưa có ai trình bày lý luận cả , mới chỉ suy đoán nên chưa thể up điểm
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  9. #9
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Em không hiểu nó chỗ này. Tại sao lại có một hằng số ở đó mà không có toán tử nào cho hằng số đó với biểu thức trên nhỉ.
    Vì nó để casting Constant Value bạn ạ,
    Đọc bài viết trên của bạn, mình nghĩ đây là một con trỏ hàm dùng để cast cái hằng đó, còn lại thì nghĩ bạn đúng

  10. #10
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    + @Kien : kinh nghiệm làm nhiều sẽ có mà Kiên, kinh nghiệm có thể gặt hái được, bạn đừng nghĩ thế sẽ làm giảm tự tin

    + gợi ý câu a: tham khảo thêm cái này
    http://forums.congdongcviet.com/show...13&postcount=7

    + mong chờ : 1 lời luập luận và phân tích hợp lý và dễ hiểu, để langman + các bạn mới có thể học tập
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

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

  1. Khai Giảng Lớp Lập Trình Di Động Android – Công Nghệ Di Động 2013
    Gửi bởi thanhlongedu trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 23-01-2013, 07:05 PM
  2. Hacking-Nghệ thuật Khai thác
    Gửi bởi hoahong89 trong diễn đàn Software (Phần mềm) | Ebooks
    Trả lời: 0
    Bài viết cuối: 10-05-2012, 08:33 PM
  3. Nghệ Thuật múa Lân Sư Rồng - Phục vụ Lễ Tết, Khai Trương, Sự Kiện
    Gửi bởi giotmuaso8 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 04-03-2011, 04:45 PM
  4. Biển và Đảo ! Giải thuật và cách triển khai trong C++
    Gửi bởi rox_rook trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 01-02-2008, 01:51 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