Thắc mắc về con trỏ

Tại sao code này của em không chạy được ạ. Mặc dù nó ko báo lỗi

#include<iostream>

using namespace std;

int main(){

int *a;

*a=3;

cout<<*a+97;

}

Con trỏ int *a của bạn được khai báo nhưng chưa được cập phát hoặc trỏ tới vùng nhớ nào cả cho nên khi bạn dùng toán tử gán *a = 3 -> Nghĩa là gán giá trị của vùng nhớ mà con trỏ a trỏ tới (chưa xác định) là 3 dẫn tới lỗi Segmentation fault.

Có thể sửa như sau:

int main(){
    int *a;
    int b;
    a = &b;
    *a=3;
    cout<<*a+97;

}

hoặc

int main(){
    int *a;
    a = (int *) malloc (sizeof(int));
    *a=3;
    cout<<*a+97;

}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?