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

Đề tài: sự khác nhau trong &a và a.!

  1. #1
    Ngày gia nhập
    06 2010
    Bài viết
    4

    Mặc định sự khác nhau trong &a và a.!

    dù lý thuyết đọc kĩ rùi mà ko ngộ ra được cách chạy của đoạn code. mong ae chỉ giúp.
    tại sao khi ko sử dụng tham chiếu "&n" trong mảng nhập thì khi chạy mảng xuất lại bị treo luôn complier nhỉ?còn sử dụng thì xuất ra bt.
    Code:
    #include<iostream.h>
    #include<stdio.h>
    #include<iomanip.h>
    #include<math.h>
    #include<conio.h>
    #include<stdlib.h>
    void Nhapmang(int a[], int &n)
    {
    	cout<<"nhap so luong phan tu cho mang:"<<setw(5);cin>>n;
    	for(int i=0;i<n;i++)
    	{
    		a[i]=rand()%1000;
    	}	
    }
    void Xuatmang(int a[],int n)
    {
    	cout<<"cac phan tu trong mang gom co:\n";
    	for(int i=0;i<n;i++)
    	cout<<setw(5)<<a[i]<<endl;
    }
    
    void main()
    {
    	int n;
    	int *a =new int[100];
    	Nhapmang(a,n);
    	Xuatmang(a,n);
    }

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

    Nếu bạn không truyền " &n " mà chỉ truyền "n" thì sự thay đổi của n trong hàm Nhapmang không liên quan gì tới n bạn đang có ở hàm main() . Vì thế khi bạn gọi hàm Xuatmang thì n bạn truyền vào hàm này sẽ không nhận đúng giá trị mà bạn mong muốn ( vừa nhận ở hàm Nhapmang ) dẫn đến không xuất được mảng .
    Bạn nên xem lại cách truyền tham biến và tham trị để hiểu rõ vấn đề !
    Khi ta ở chỉ là nơi đất ở
    Khi ta đi đất bỗng hóa tâm hồn !

  3. #3
    Ngày gia nhập
    02 2012
    Nơi ở
    hà nội
    Bài viết
    58

    Trích dẫn Nguyên bản được gửi bởi h0angthai90 Xem bài viết
    dù lý thuyết đọc kĩ rùi mà ko ngộ ra được cách chạy của đoạn code. mong ae chỉ giúp.
    tại sao khi ko sử dụng tham chiếu "&n" trong mảng nhập thì khi chạy mảng xuất lại bị treo luôn complier nhỉ?còn sử dụng thì xuất ra bt.
    Code:
    #include<iostream.h>
    #include<stdio.h>
    #include<iomanip.h>
    #include<math.h>
    #include<conio.h>
    #include<stdlib.h>
    void Nhapmang(int a[], int &n)
    {
    	cout<<"nhap so luong phan tu cho mang:"<<setw(5);cin>>n;
    	for(int i=0;i<n;i++)
    	{
    		a[i]=rand()%1000;
    	}	
    }
    void Xuatmang(int a[],int n)
    {
    	cout<<"cac phan tu trong mang gom co:\n";
    	for(int i=0;i<n;i++)
    	cout<<setw(5)<<a[i]<<endl;
    }
    
    void main()
    {
    	int n;
    	int *a =new int[100];
    	Nhapmang(a,n);
    	Xuatmang(a,n);
    }
    Hiểu đơn giản như này:
    &a là địa chỉ biến a. khi ta truyền địa chỉ biến a vào hàm thì giá trị của biến a thao tác trong hàm sẽ bị thay đổi.
    a là một biến. và khi truyền vào trong hàm thì nó sẽ copy giá trị biến a truyền vào hàm đó. Nếu bạn có thay đổi giá trị thi cũng ko ảnh hưởng gì đên biến a. vì khi thao tác trong hàm bạn đang thao tác với biến đc copy giá trị của a.
    + Quách Việt Kiên
    + Yahoo: Kaka_8x_vn
    + skype: kiencuongno1
    + Gmail: kiencuongno1@gmail.com
    Ai có thể free cho mình 50k thẻ điện thoại ko.

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

  1. Lập trình C++ bit shifting? kết quả binary y hệt nhau nhưng cout lại khác nhau
    Gửi bởi quano1 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 10-05-2016, 10:28 AM
  2. Xem giúp mình 2 vòng lặp giống nhau nhưng kết quả khác nhau
    Gửi bởi anhkhoadn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 06-11-2013, 12:57 AM
  3. Lập trình C++ khác nhau trong việc khái báo!
    Gửi bởi ngngocnhung94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 08-06-2013, 10:59 PM
  4. Database Hai câu truy vấn giống nhau(logic) mà kết quả lại khác nhau??
    Gửi bởi kqphu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 15-10-2011, 11:50 AM
  5. Làm thế nào để xóa một số trùng nhau trong một dãy số trong C++?
    Gửi bởi longkungfu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 02-03-2011, 10:28 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