Tôi có 2 câu hỏi ... (tôi đang học C và điều này có thể là câu hỏi ngớ ngẩn. Xin lỗi)Có hợp lệ để in địa chỉ của chuỗi trong C
Theo How to declare strings in C và trong hầu hết các sách, họ luôn nói tuyên bố một chuỗi mặc dù bạn đang phân bổ bộ nhớ bằng cách nói
char p2[] = "String";
câu hỏi của tôi là, Liệu có cách nào để khai báo một chuỗi?
Theo https://stackoverflow.com/a/1704433/1814023, trong một ví dụ như thế này,
char s[]="hello";
được đặt trong khu vực đọc chỉ và sau đó sao chép vào mảng. Có hợp lệ trong C để in địa chỉ của chuỗi như thế này không?
printf("%p\n", &"Hello There"); // I tried, it prints some address
và bằng cách làm này
printf("%p\n", &"Hello There");
printf("%p\n", &"Hello There");
nó được in cùng một địa chỉ. cảm giác là gì, nó nên in địa chỉ khác nhau. Là trình biên dịch làm một số tối ưu hóa ở đây?
Có cách nào khai báo biến chuỗi không? – StackIT
Tôi không nghĩ rằng có thể khai báo một biến chuỗi. Biến chuỗi luôn được xác định. Tôi có đúng không? – StackIT
@Patil: bạn có ý nghĩa gì bởi "biến chuỗi"? Bạn có thể có một mảng char, hoặc một con trỏ đến một char. Những người có thể được tuyên bố. Nếu mảng chứa một ký tự null và tất cả các giá trị trước đó là giá trị trong một số bộ ký tự cụ thể (hoặc nếu cùng giữ cho giá trị được chỉ bởi char *), thì bạn có thể gọi biến là "chuỗi". –