Khi tôi biên dịch và thực thi mã này liên tục trong một vài lần, nó báo cáo địa chỉ của cc là 0x0012FF5C. Nhưng khi tôi cố gắng in ra chuỗi tại địa chỉ đó bằng cách sử dụng cuộc gọi thứ hai để printf trong foo, nó in rác thay vì in ra "Hello" ?? Tại sao như vậy?? Nếu tôi biết địa chỉ nằm trong không gian địa chỉ của ứng dụng (ít nhất là cho đến khi tôi không khởi động lại máy tính của mình hoặc bắt đầu một số ứng dụng khác đòi hỏi nhiều không gian và nguyên nhân) ứng dụng của tôi được phân trang) ??Tại sao chúng ta không thể sử dụng địa chỉ trực tiếp trong mã c hoặc C++?
void foo(char *cc[])
{
printf("%x\n",cc);
printf("%s\n",(char *)(0x0012FF5C));
}
int main()
{
char *c[] = {"Hello","World"};
foo(c);
}
Tại sao bạn muốn thực hiện điều này vì bạn chỉ bảo hiểm rủi ro cho cược của bạn mà cùng một địa chỉ sẽ được sử dụng? Thực hiện một chút thay đổi và bạn phá vỡ mã.Có vẻ như điều ngớ ngẩn để làm hoặc thậm chí suy ngẫm. –
Vui lòng không xóa câu hỏi được trả lời. Ai đó cố gắng trả lời câu hỏi của bạn. –