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

Đề tài: con trỏ và mảng

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    6

    Mặc định con trỏ và mảng

    1. cài đặt một thủ tục sắp xếp các phần tử của một mảng theo cách thông thường.
    Code:
    void SortArray(int A[], int n){
    	int temp;
    	for(int i=0; i<n-1; i++)
    	for(int j=i+1; j<n; j++)
    		if(A[i] > A[j]){
    			temp = A[i];
    			A[i] = A[j];
    			A[j] = temp;
    }
    }
    2. cài đặt một thủ tục sắp xếp các phần tử của một mảng theo cách dùng con trỏ.
    Code:
    void SortArray(int *A, int n){
    	int temp;
    	for(int i=0; i<n-1; i++)
    	for(int j=i+1; j<n; j++)
    		if(*(A+i) > *(A+j)){
    			temp = *(A+i);
    			*(A+i) = *(A+j);
    			*(A+j) = temp;
    }
    }
    Chương trình 1 minh hoạ việc cài đặt một thủ tục sắp xếp các phần tử của một mảng theo cách thông thường.Chương trình 2 minh hoạ việc cài đặt một thủ tục sắp xếp các phần tử của một mảng theo cách dùng con trỏ.Hai thủ tục này có chức năng hoàn toàn giống nhau.

    Mọi người có thể giúp mình giải thích rõ hơn về đoạn code thứ hai được không.mình không hiểu lắm. giúp mình giải thích từng dòng một nha.thanks

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Từng dòng 1 nó cũng tương ứng giống nhau mà bạn.

    Tạm hiểu như này
    Con trỏ A trỏ đến phần tử đầu tiên, tương ứng con trỏ (A+i) trỏ đến phần tử thứ i

    Phép toán *(<con trỏ>) là phép lấy giá trị của con trỏ, *A giá trị ô nhớ mà A trỏ tới, tức giá trị đầu tiên. *(A+i) giá trị thứ i.

  3. #3
    Ngày gia nhập
    04 2008
    Bài viết
    336

    cả 2 code "gần như" là một ... chẳng khác nhau tí nào cả bởi vì
    *(A+i) tương đương với A[i] ( [] lúc này là toán tử truy xuất ngẫu nhiên )

    mảng thực chất là con trỏ nắm địa chỉ đầu tiên của khối nhớ mà nó quản lý.
    theo mình thì cái này mới là con trỏ
    C Code:
    1. void SortArray(int *A, int n){
    2.     int temp;
    3.     for(int *i=A; i!=A+n-1; ++i)
    4.     for(int *j=i+1; j!=A+n; ++j)
    5.         if(*i > *j){
    6.             temp = *i;
    7.             *i = *j;
    8.             *j = temp;
    9. }
    10. }
    code ra gió bão

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Mảng là một con trỏ hằng
    Eg:
    Code:
    int a[10];
    int *const p = calloc(10,sizeof(int));
    là tương đương

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