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

Đề tài: Đoạn chương trình "lạ"

  1. #1
    Ngày gia nhập
    05 2007
    Bài viết
    64

    Mặc định Đoạn chương trình "lạ"

    Ai giải thích giùm mình đoạn chương trình này với, mình thấy cách khai báo này hơi bị lạ:
    Code:
    #include <iostream>
    using namespace std;
    
    int a=1, b=2, *A[2];
    int *(&(*x)())[2]; // không hiểu
    int *(&F())[2]{ //// không hiểu
    	cout<<"f"<<endl;
    	return A;
    };
    
    int main(){
    	A[0]=&a;
    	A[1]=&b;
    	x=F;
    	cout<<(*x()[0])<<(*x()[1]);
    	return 0;
    }
    I know... nothing

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    9

    Cái đoạn code này nhập nhằng ở chỗ là kiểu trả về của function. Như khai báo thì A là mảng gồm 2 con trỏ int, x là con trỏ hàm trỏ tới hàm ko nhận tham số, trả về địa chỉ của mảng chứa các biến con trỏ int. Viết như vậy chỉ là đánh lừa chúng ta mà thôi, vì mảng trong C++ là dạng con trỏ, cho nên ta có hàm F ko khác gì là hàm có dạng int** F(), chứ không phải là trả về địa chỉ mảng chỉ gồm 2 phần tử, do cấp phát tĩnh. Tóm lại, code có thể viết lại như sau :
    Code:
    #include <iostream>
    using namespace std;
    
    int a = 1, b = 2, *A[2];
    // A tương đương int** nhưng chỉ cấp phát 2 phần tử
    
    int** (*x)();
    int** F() {
    	cout << "f" << endl;
    	return A;
    };
    
    int main(){
    	A[0] = &a;
    	A[1] = &b;
    	x = F;
    	// lấy địa chỉ của A = cách gọi x, và lấy giá trị int của a và b qua mảng con trỏ A
    	cout << (*x()[0]) << (*x()[1]);
    	return 0;
    }
    Đã được chỉnh sửa lần cuối bởi vukex2079 : 16-12-2007 lúc 05:39 PM.

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

  1. nghĩa của 3 từ "principals", "artifacts", "securables" là như thế nào?
    Gửi bởi ntbao trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 2
    Bài viết cuối: 02-09-2017, 06:36 PM
  2. Lỗi"error C2275: 'T' : illegal use of this type as an expression" khi dùng "list<T>::iterator it"
    Gửi bởi doicanhden trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 6
    Bài viết cuối: 19-01-2012, 01:59 AM
  3. Trả lời: 1
    Bài viết cuối: 01-12-2011, 07:32 PM
  4. Trả lời: 4
    Bài viết cuối: 14-09-2011, 11:01 PM
  5. Problems : " recover tree " with input as " preorder" and "inorder"
    Gửi bởi HoangManhHa1991 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 13-04-2011, 10:19 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