Cho mình hỏi tại sao:
char *p;
p="Hello";
lại chạy, trong khi:
char *p;
p[0]='H';
lại không chạy?
Cho mình hỏi tại sao:
char *p;
p="Hello";
lại chạy, trong khi:
char *p;
p[0]='H';
lại không chạy?
Vì đoạn code dưới bạn chưa cấp phát vùng nhớ cho con trỏ p mà gán p[0] = 'H' thì nó không chạy. Đoạn code trên theo mình thì "hello" là 1 chuỗi hằng mà bạn đã trỏ p đến vùng nhớ của nó rồi nên run được !
char *p;
p = "Hello";
Vì có “p = …” tức là p đã được khởi tạo giá trị.
Còn khi bạn chưa có lệnh “p = …” tức là p đang trỏ đến một ô nhớ ngẫu nhiên nào đó, nếu ô nhớ đó đã được cấp phát cho một ứng dụng khác thì bạn chỉ có thể đọc giá trị của nó chứ không thể ghi được.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?