Cố gắng hiểu những gì con trỏ thực hiện chức năng thực sự đại diện? Đó có phải là địa chỉ trong phân đoạn mã nơi chức năng cư trú không?Giá trị con trỏ của con trỏ hàm đại diện cho cái gì?
Đối với ví dụ: đoạn mã này:
#include <stdio.h>
void foo(void)
{
}
int main(void)
{
int a = 10;
printf("a's address: %p\n", &a);
printf("foo's address: %p\n", foo);
return 0;
}
... in này:
[sh/prog-exercises/adam]:./a.out
a's address: 0xbfffb414
foo's address: 0x8048430
Tôi đoán Tôi là một chút nhầm lẫn với cách chính xác chồng/đống của một quá trình liên quan với phân đoạn dữ liệu ELF/phân đoạn mã. Bất kỳ con trỏ hữu ích nào cũng sẽ thực sự được chào đón. Ngoài ra, câu hỏi đầu tiên của tôi, vì vậy hãy nhẹ nhàng, tôi thực sự đang cố gắng học hỏi. Cảm ơn!
Phải, vì vậy, đầu ra ở đây đại diện cho vị trí mà hàm cụ thể này đã được tải như một phần của đoạn mã? Có cách nào để chương trình C in đoạn dữ liệu, phân đoạn mã bắt đầu/kết thúc địa chỉ không? – helpmelearn
@helpmelearn: Có, đó là địa chỉ bắt đầu chức năng. Tôi không biết một giải pháp cho việc tìm kiếm các địa chỉ phân đoạn và tôi cho rằng nó sẽ phụ thuộc vào việc triển khai thực hiện. Có lẽ có một số chương trình tiện ích có thể làm điều này cho bất kỳ quá trình nào. – sharptooth