- vừa được xem lúc

Two Pointer

0 0 4

Người đăng: Nguyễn Đặng Triều

Theo Viblo Asia

Bài viết mình sẽ giới thiệu về Two Pointer, đại loại là sử dụng con trỏ kép **.

Cú pháp

type_data **name_variable;

Ví dụ

#include <stdio.h>
#include <stdlib.h> int main() { int rows = 3; // Số hàng int cols = 4; // Số cột // Khai báo một con trỏ kép int **arr; // Cấp phát bộ nhớ cho mảng chính (chứa các con trỏ hàng) // arr bây giờ là một mảng có 3 phần tử, mỗi phần tử là một con trỏ kiểu int* arr = (int **)malloc(rows * sizeof(int *)); // Kiểm tra xem việc cấp phát có thành công không if (arr == NULL) { printf("Loi: Khong the cap phat bo nho."); return 1; } // Cấp phát bộ nhớ cho từng hàng // Mỗi phần tử của mảng arr (tức là mỗi con trỏ hàng) sẽ trỏ tới một mảng số nguyên for (int i = 0; i < rows; i++) { arr[i] = (int *)malloc(cols * sizeof(int)); if (arr[i] == NULL) { printf("Loi: Khong the cap phat bo nho."); // Giải phóng bộ nhớ đã cấp phát trước đó để tránh rò rỉ for (int j = 0; j < i; j++) { free(arr[j]); } free(arr); return 1; } } // Gán giá trị vào mảng for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { arr[i][j] = i * cols + j + 1; } } // In mảng ra màn hình for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { printf("%d ", arr[i][j]); } printf("\n"); } // Giải phóng bộ nhớ đã cấp phát // Phải giải phóng từng hàng trước for (int i = 0; i < rows; i++) { free(arr[i]); } // Sau đó giải phóng mảng chính free(arr); return 0;
}

Output

1 2 3 4 5 6 7 8 9 10 11 12 

Bình luận

Bài viết tương tự

- vừa được xem lúc

Memory layout của một chương trình C/C++

1. Đặt Vấn Đề.

0 0 60

- vừa được xem lúc

Sự khác nhau giữa bộ nhớ Heap và bộ nhớ Stack trong lập trình

1. Giới thiệu. . Như chúng ta đã biết thì việc Quản lý bộ nhớ đối với một lập trình viên là rất quan trọng.

0 0 75

- vừa được xem lúc

Tích hợp thư viện C/C++ vào một dự án Flutter như thế nào?

Chào các bạn hôm nay rảnh rỗi thì mình viết một bài hướng dẫn về cách tích hợp một thư viện C/C++ vào một dự án Flutter. Thì cũng khá đơn giãn thôi vì Flutter đã cũng cấp cho chúng ta một thư viện khá

0 0 78

- vừa được xem lúc

Programming

Definition of Programming. .

0 0 53

- vừa được xem lúc

Gọi hàm của C++ trong Python bằng ctypes

Nếu đã từng dùng qua các thư viện liên quan đến toán học của Python như numpy, các bạn sẽ để ý thấy các nó có tốc độ xử lý rất nhanh. Điều này là do một phần của package này được viết bằng C/C++ và ph

0 0 55

- vừa được xem lúc

Build ứng dụng Cross Platform với Go và CGO

1. Giới thiệu.

0 0 54