Cách khai báo mảng 1 chiều trong C/C++
1. Khai báo cấp phát cố định
int a[100]; // khai báo xin cấp phát 1 mảng 1 chiều gồm có 100 phần tửNên #define số luợng phần tử truớc để dễ quản lý
#define ARRAY_SIZE 5 int anArray[ARRAY_SIZE];Đối với cách này đòi hỏi phải "luờng" truơc đuợc số phần sử khi chuơng trình sử dụng.
Hạn chế sử dụng cách này vì sẽ phí bộ nhớ
2. Khai báo cấp phát động/* malloc example: random string generator*/ #include <stdio.h> /* printf, scanf, NULL */ #include <stdlib.h> /* malloc, free, rand */ int main () { int i,n; char * buffer; printf ("How long do you want the string? "); scanf ("%d", &i); buffer = (char*) malloc (i+1); if (buffer==NULL) exit (1); for (n=0; n<i; n++) buffer[n]=rand()%26+'a'; buffer[i]='\0'; printf ("Random string: %s\n",buffer); free (buffer); return 0; }
Đối với ngôn ngữ C ta sử dụng toán tử malloc
int *myArray; myArray = (int*)malloc(n*sizeof(int));Đỗi với C++ ta sử dụng toán tử new
#define ARRAY_SIZE 5 int *myArray; myArray = new int[ARRAY_SIZE];Lưu ý: Đối với dạng sử dụng con trỏ sau khi sử dụng nhớ sử dụng toán tử delete để hủy nó khi không còn sử dụng.
#include <iostream> #include <new> using namespace std; int main () { int i,n; int * p; cout << "How many numbers would you like to type? "; cin >> i; p= new (nothrow) int[i]; if (p == nullptr) cout << "Error: memory could not be allocated"; else { for (n=0; n<i; n++) { cout << "Enter number: "; cin >> p[n]; } cout << "You have entered: "; for (n=0; n<i; n++) cout << p[n] << ", "; delete[] p; } return 0; }
Tags:
DevC