Bài 3 : Mảng Và Con Trỏ Trong Lập Trình C++

6431

Chương 3 : mảng và con trỏ trong c++

Chúng ta sẽ tiếp tục bài học về lập trình hướng đối tượng c++ qua bài chương 3 : mảng và con trỏ trong c++

 1. Mảng

  • Mảng (Array)
    • Là một tập các vị trí nhớ liên tiếp nhau
    • Các phần tử trong mảng có cùng tên và cùng kiểu.
  • Truy nhập tới phần tử trong mảng
    • Xác định thông qua tên mảng và chỉ số: arrayname[ position number ]
    • Phần tử đầu tiên ở vị trí thứ 0

Khai báo mảng

  • type arrayName[ arraySize ];
  • int c[ 10 ];  // mảng c gồm 10 số nguyên
  • float d[ 3284 ]; // mảng d gồm 3284 số thực
  • Có thể khai báo nhiều mảng cùng kiểu
  • int b[ 100 ], x[ 27 ];

Khởi tạo mảng

  • Sử dụng vòng lặp for: gán giá trị cho từng phần tử trong mảng.
  • Sử dụng danh sách khởi tạo:
    • int n[ 5 ] = { 1, 2, 3, 4, 5 };
    • Nếu không đủ giá trị khởi tạo thì những phần tử còn lại sẽ nhận giá trị mặc định.
    • Nếu giá trị khởi tạo nhiều hơn kích thước mảng thì sẽ báo lỗi.
    • Gán tất cả các phần tử với cùng một giá trị int n[ 5 ] = { 0 };
    • Nếu kích thước mảng không được khai báo thì danh sách khởi tạo sẽ xác định:

int n[] = { 1, 2, 3, 4, 5 };
//Mảng n có 5 phần tử

Tham số mảng

  • Tham số mảng được biểu diễn bởi kiểu dữ liệu và kích thước của mảng

void display(float [n][m]);

  • Hàm có thể không cần biết kích thước của mảng nhưng phải biết kích thước của một phần tử trong mảng

void myFunction(int n[]);

void display(float [][m]);

  • Khi gọi hàm, ta chỉ cần truyền tên mảng

int myArray[ 24 ];

myFunction( myArray);

  • Mảng được truyền theo kiểu truyền tham chiếu
    • Hàm có thể chỉnh sửa dữ liệu của các phần tử trong mảng
    • Tên mảng là địa chỉ của phần tử đầu tiên

Ví dụ :  

Mảng nhiều chiều

  • Mảng nhiều chiều được coi là mảng của mảng.
  • Khai báo:

  double sales[2][2];

  sales[1][0]=2.5;

  • Khởi tạo:

   double sales[2][2]={{1.2,3.0},{-1.0,2.3}};

Xâu ký tự

  • Là một mảng các ký tự
  • Tất cả các xâu ký tự đều kết thúc với ký tự null (‘\0’)
  • Ví dụ
  • char string1[] = “hello”;
  • tự null được tự động bổ sung.
  • string1 có 6 ký tự
  • char string1[] = {‘h’, ‘e’, ‘l’, ‘l’,’o‘, ‘\0’ };

Kiểu dữ liệu string

  • string là một lớp chuẩn trong C++
  • Các ký tự trong string được đánh từ 0
  • Khởi tạo một biến kiểu string như sau:
    • string s1 (“Man”);
    • string s2=“Beast”;
    • string s3;
  • Ta có thể sử dụng các tóan tử tóan học, logic … trên đối tượng string
    • s3 = s1;
    • s3 = “Neither” + s1 + “nor”;
    • s3 += s2;

string và toán tử

  • Hàm getline(cin, string str): lưu thông tin từ luồng vào chuẩn đưa vào str.
  • Ví dụ:

2. Con trỏ

  • Mỗi biến trong chương trình chiếm một vùng nhớ, ví dụ biến kiểu int chiếm 4 byte nhớ.
  • Vị trí của vùng nhớ được gọi là địa chỉ của biến

con-tro-c2

Biến con trỏ

  • Biến con trỏ là biến lưu giá trị của địa chỉ vùng nhớ.
  • Mỗi kiểu dữ liệu có một biến con trỏ riêng: con trỏ kiểu int, con trỏ kiểu char…
  • C++ sử dụng:
  • Toán tử & để lấy địa chỉ của biến
  • Toán tử * để lấy nội dung của biến được trỏ.
  • Ví dụ:

bien-con-tro-c2

Con trỏ hằng

  • Khai báo hằng:

  • Khai báo con trỏ hằng

  • Dữ liệu được trỏ bởi con trỏ hằng thì không thể thay đổi nhưng con trỏ thì có thể.

  • Nếu khai báo

  • Nếu khai báo như sau thì không thể thay đổi được cả con trỏ và nội dung của con trỏ:

Con trỏ và mảng

  • Mảng có thể được truy nhập thông qua con trỏ.
  • Tên mảng là một con trỏ hằng trỏ tới kiểu dữ liệu của các thành phần được lưu trữ trong mảng.

Ví dụ :

Con trỏ là tham số của hàm

  • C++ cung cấp 3 cách truyền tham số:
  • Truyền tham trị: void f(int x);
  • Truyền tham chiếu: void f(int& x);
  • Truyền con trỏ: void f(int* x);

Phép toán học trên con trỏ

  • Phân biệt các phép toán trên biến con trỏ và biến thông thường.

toan-c-2

Con trỏ đến con trỏ

con-tro-con tro-2

Con trỏ void

  • Con trỏ void có thể lưu địa chỉ của biến có kiểu dữ liệu bất kỳ.

Con trỏ null

  • Con trỏ có giá trị Null tức là không trỏ vào một địa chỉ nhớ cụ thể nào.

Con trỏ hàm

  • Thường được sử dụng để truyền hàm như một tham số của hàm khác.
  • Khi khai báo tham số là con trỏ hàm cần khai báo:
    • Prototype của hàm
    • Không sử dụng tên hàm
    • Đặt dấu * trước tên tham số

Ví dụ :

Bộ nhớ động

  • Cấp phát bộ nhớ trong khi thực thi chương trình
  • Toán tử new: cấp phát bộ nhớ
    • pointer = new type
    • pointer = new type [number_of_elements]
  • Toán tử delete: xóa vùng nhớ đã cấp
    • delete pointer;
    • delete [] pointer;

Ví dụ : 

Như vậy là chúng ta lại tìm hiểu thêm về mảng và con trỏ trong lập trình c++ , để hiểu rõ hơn các bạn có thể tìm và đọc lại bài mảng trong ccon trỏ trong c để tăng thêm lượng kiến thức.

Nguồn : lập trình c

BÌNH LUẬN

Please enter your comment!
Please enter your name here