01/10/2018, 17:26

Mảng động với char

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?

Secret viết 19:38 ngày 01/10/2018

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 !

Trần Hoàn viết 19:34 ngày 01/10/2018
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.

Bài liên quan
0