Con Trỏ Và Mảng Trong Lập Trình C - VietTuts
Có thể bạn quan tâm
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] = %u\n", 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] = 6487619Lư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.
Nội dung chính
- Mối quan hệ giữa con trỏ và mảng trong lập trình C
- 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
Mối quan hệ giữa con trỏ và mảng trong lập trình C
Ví dụ mảng:
int arr [4];
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 Con trỏ trỏ tới con trỏ trong C Quản lý bộ nhớ trong lập trình CTừ khóa » Hàm Con Trỏ Và Mảng
-
Bài 64. Mối Quan Hệ Giữa Con Trỏ Và Mảng - Lập Trình Không Khó
-
Chi Tiết Bài Học Con Trỏ Và Mảng Trong C++ - Vimentor
-
Sự Tương Quan Giữa Con Trỏ Và Mảng Trong C++ - Góc Học IT
-
Con Trỏ Mảng Trong C++
-
Con Trỏ Và Mảng Trong C++ (Pointers And Arrays) | How Kteam
-
8.2 Con Trỏ Và Mảng Một Chiều - Khóa Học C++
-
1001 Tips: Con Trỏ Và Hàm (Pointer & Function) Trong C++ - TopDev
-
[PDF] Bài 10: Con Trỏ Và Mảng động - UET
-
[Tự Học C++] Con Trỏ Và Mảng Trong C++
-
Con Trỏ Và Mảng Trong C++
-
Con Trỏ Và Mảng - Tài Liệu Text - 123doc
-
[PDF] Bài 6a - MẢNG VÀ CON TRỎ - FIT@MTA
-
Con Trỏ Và Mảng Trong C++ - TEK4
-
[PDF] Chương 5. Mảng, Con Trỏ, Tham Chiếu