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

const

0 0 6

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

Theo Viblo Asia

Dưới đây là các ví dụ mẫu mô tả cách sử dụng const

Struct

#include <stdio.h>
#include <string.h> struct information
{ int d; int m; int y;
}; int main()
{ struct information trieu; struct information * ptr_infor; ptr_infor = &trieu; trieu.d = 1; trieu.m = 4; trieu.y = 2001; printf("trieu: %d-%d-%d\n", trieu.d, trieu.m, trieu.y); // Thay đổi giá trị thông qua con trỏ ptr_infor->d = 2; printf("trieu ptr: %d-%d-%d\n", ptr_infor->d, ptr_infor->m, ptr_infor->y); return 0;
}

Output

trieu: 1-4-2001
trieu ptr: 2-4-2001
  • Khi thay đổi struct information const * ptr_infor; hoặc const struct information * ptr_infor; sẽ gây ra lỗi:
Main.c: In function ‘main’:
Main.c:26:16: error: assignment of member ‘d’ in read-only object 26 | ptr_infor->d = 2; |

Điều này xảy ra là do khi dùng const ở đây thì nó có ý nghĩa là giá trị của struct do con trỏ này trỏ đến thì không được phép sửa đổi.

  • Khi thay đổi struct information * const ptr_infor; sẽ gây ra lỗi:
Main.c: In function ‘main’:
Main.c:17:13: error: assignment of read-only variable ‘ptr_infor’ 17 | ptr_infor = &trieu;

Điều này xảy ra khi dùng * const nghĩa là địa chỉ mà con trỏ ptr_info trỏ tới không được thay đổi trong quá trình chạy, ta cần phải gán địa chỉ struct ngay lúc khởi tạo.

struct information * const ptr_infor = &trieu;

Kết luận:

  • struct information * ptr_infor: con trỏ thay đổi, giá trị struct thay đổi.
  • struct information const * ptr_infor: con trỏ thay đổi, giá trị struct hằng số
  • struct information * const ptr_infor: con trỏ hằng số, giá trị struct thay đổi
  • struct information const * const ptr_infor: con trỏ hằng số, giá trị struct hằng số

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 58

- 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 72

- 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 76

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

Programming

Definition of Programming. .

0 0 50

- 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 51

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

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

1. Giới thiệu.

0 0 52