Con trỏ và mảng trong lập trình C

Con trỏ và mảng trong lập trình C

1 / 3 ❮ ❯ Con trỏ và mảng trong lập trình C Con trỏ trỏ tới con trỏ trong […]

Learn more »



Con trỏ và mảng trong lập trình C



Trong bài viết này, bạn sẽ tìm hiểu về mối quan hệ giữa con trỏ và mảng trong lập trình C, và sử dụng chúng một cách hiệu quả trong chương trình của mình.

Mảng có liên quan chặt chẽ với con trỏ trong lập trình C nhưng sự khác biệt quan trọng giữa chúng là, một biến con trỏ có các địa chỉ khác nhau cũng như giá trị. Trong khi đó, trong trường hợp mảng là cố định.

Ví dụ sau sẽ chứng minh điều này cho bạn:

#include <stdio.h> int main() {    char charArr[4];    int i;     for(i = 0; i < 4; ++i)    {       printf("Dia chi cua charArr[%d] = %un", i, &charArr[i]);    }     return 0; } 

Kết quả:

Dia chi cua charArr[0] = 6487616 Dia chi cua charArr[1] = 6487617 Dia chi cua charArr[2] = 6487618 Dia chi cua charArr[3] = 6487619 

Lưu ý: Bạn có thể nhận được địa chỉ khác nhau của một mảng. Có sự khác biệt giống nhau (sự khác nhau 1 byte) giữa bất kỳ hai phần tử liên tiếp nào của mảng charArr. Đối với con trỏ, nó có thể trỏ vào vị trí của một biến khác, nó có thể lưu trữ bất kỳ địa chỉ nào.


Mối quan hệ giữa con trỏ và mảng trong lập trình C

Ví dụ mảng:

int arr [4]; 

Con trỏ và mảng trong lập trình C

Trong lập trình C, tên của mảng luôn trỏ đến địa chỉ của phần tử đầu tiên của mảng.

Trong ví dụ trên, arr và & arr[0] trỏ tới địa chỉ của phần tử đầu tiên.

Vì địa chỉ của cả hai đều giống nhau, các giá trị của arr và & arr[0] cũng giống nhau.

arr[0] tương đương với *arr (giá trị của một địa chỉ của con trỏ) 

Tương tự:

&arr[1] tương đương với (arr + 1) và arr[1] tương đương với *(arr + 1). &arr[2] tương đương với (arr + 2) và arr[2] tương đương với *(arr + 2). &arr[3] tương đương với (arr + 3) và arr[3] tương đương với *(arr + 3). . . &arr[i] tương đương với (arr + i) và arr[i] tương đương với *(arr + i). 

Trong C, bạn có thể khai báo một mảng và có thể sử dụng con trỏ để thay đổi dữ liệu của một mảng.


Ví dụ: Chương trình tính tổng 6 chữ số nhập từ bàn phím với con trỏ và mảng

#include <stdio.h>  int main() {   int i, arr[6],sum = 0;   printf("Nhap 6 so nguyen:n");   for(i = 0; i < 6; ++i)   {       // (arr + i) la tuong duong voi &arr[i]       scanf("%d", (arr + i));        // *(arr + i) la tuong duong voi arr[i]       sum += *(arr + i);   }   printf("Sum = %d", sum);   return 0; } 

Kết quả:

Nhap 6 so nguyen: 1 2 3 4 5 6 Sum = 21 








Source link


Lượt xem : 229

Integrations
Users

Share Profile

Anyone at KeenThemes can view
Anyone with link can edit

Give Award

Anyone at KeenThemes can view
Anyone with link can edit

Report User

Let us know why you’re reporing this person
Don't worry, your report is completely anonymous; the person you're
reporting will not be informed that you've submitted it