Strings trong C được biểu diễn như mảng ký tự.
char *p = "String";
Bạn đang tuyên bố một con trỏ trỏ đến một chuỗi được lưu trữ một số nơi trong chương trình của bạn (sửa đổi chuỗi này là hành vi không xác định) theo ngôn ngữ lập trình C 2 ed.
char p2[] = "String";
Bạn đang tuyên bố một mảng của char khởi tạo với chuỗi "String" lại để trình biên dịch công việc để đếm kích thước của mảng.
char p3[5] = "String";
Bạn đang khai báo một mảng có kích thước 5 và khởi tạo nó bằng "Chuỗi". Đây là lỗi gây ra "Chuỗi" không phù hợp với 5 yếu tố.
char p3[7] = "String";
là khai báo chính xác ('\ 0' là ký tự kết thúc trong chuỗi c).
http://c-faq.com/~scs/cclass/notes/sx8.html
Điều cuối cùng là tràn bộ đệm, vì vậy rất hay. – Dan
Ví dụ thứ ba của bạn phải là 'p3 [6]': bạn phải tính đến số 0 – fge
@fge cuối cùng: cần 7 thực tế. – Mat