Hỏi về cách lưu trữ địa chỉ hàm

void funct() 
{
     printf ( "GeeksforGeeks" ); 
}

int main( void ) 
{ 

     funct();
     printf( "address of function main() is :%p\n" , main); 
     printf( "address of function funct() is : %p\n" , funct); 
     return 0; 
}

Mọi người cho e hỏi là sao 2 địa chỉ này lại khác nhau vậy ạ, e tưởng khi hàm funct() được gọi trong hàm main() thì nó cũng sẽ có địa chỉ giống main.

Theo mình nghĩ là hàm funct sẽ có địa chỉ lưu trữ khác và khi thực hiện gọi hàm trong main nó chỉ thực hiện hàm đó không có nghĩa nó phải cùng địa chỉ với hàm main vì thực ra không phải chỉ hàm mà các biến kể cả trong cùng một hàm cũng lưu trữ địa chỉ khác nhau r, khi gọi đến là nó chỉ tham chiếu đến biến đó thôi chứ k phải là sẽ cùng địa chỉ! Đấy là cách hiểu của mình

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?