01/10/2018, 00:18
Tại sao con trỏ bậc 2 lại không có địa chỉ khi khai báo?
Tại sao con trỏ bậc 2 lại không có địa chỉ khi khai báo? Làm thế nào để khắc phục nó?
int ** a;
int m = 3;
int n = 5;
int iValue = 1;
// Gán giá trị
for (int y = 0; y < m; y++)
{
for (int x = 0; x < n; x++)
{
a[y][x] = iValue ++;
}
}
// Xuất giá trị
for (int y = 0; y < m; y++)
{
for (int x = 0; x < n; x++)
{
printf("%-5d", a[y][x]);
}
printf("
");
}
Bài liên quan
Thì đã tạo mới nó hoặc bắt nó chỉ vào đâu đâu mà có địa chỉ ?
con trỏ
a
bạn tạo ra mà có cấp phát vùng nhớ cho nó đâu. Phải cấp phát vùng nhớ cho nó trước khi xài.Chưa khởi tạo bộ nhớ mà vẫn gán giá trị bình thường hả ta
Gán bình thường, có khả năng crash thôi.
Đúng rồi, nhưng hình như khi run xong nó hiện thêm 1 cái bảng to tướng nữa
Có trình biên dịch gán mặc định bằng null/nullptr/0 có trình biên dịch không gán mặc định mà là một giá trị ngẫu nhiên có trong vùng nhớ đó.
Trước mình có code một cái lib C/C++ chạy trên android. Khi build và test trên pc thì không có vấn đề gì, build test trên android thì crack.
Sau kiểm tra lại là con trỏ trên android không được gán lại bằng null khi tạo nên khi gọi hàm nó kiểm tra và giải phóng vùng nhớ không được phép.
Thói quen tốt là khi khởi tạo gán bằng null.
VD: int **a = nullptr;
Con trỏ bình thường cũng nên gán int *pa = nullptr;
Chúc bạn to đầu với con trỏ trong C. @_@!
Em làm được rồi. Cảm ơn anh ạ