Chương trình hoán đổi các giá trị biến thực vì hàm truy cập chúng theo địa chỉ sử dụng con trỏ. Ở đây chúng ta sẽ thảo luận về quá trình chương trình Show
Các hàm có tham số mảngTrong C, chúng ta không thể truyền mảng theo giá trị cho hàm. Trong khi đó, tên mảng là một con trỏ (địa chỉ) nên ta chỉ truyền tên mảng cho hàm nghĩa là truyền con trỏ vào mảng Ví dụ, chúng tôi xem xét chương trình sau int add_array (int *a, int num_elements); int main() { int Tab[5] = {100, 220, 37, 16, 98}; printf("Total summation is %d\n", add_array(Tab, 5)); return 0;} int add_array (int *p, int size) { int total = 0; int k; for (k = 0; k < size; k++) { total += p[k]; /* it is equivalent to total +=*p ;p++; */} return (total);} đầu ra Total summation is 471 Ở đây, chúng tôi sẽ giải thích mã chương trình với các chi tiết của nó
Các hàm trả về một mảngTrong C, chúng ta có thể trả về một con trỏ tới một mảng, như trong chương trình sau #include <stdio.h> int * build_array(); int main() { int *a; a = build_array(); /* get first 5 even numbers */ for (k = 0; k < 5; k++) printf("%d\n", a[k]); return 0;} int * build_array() { static int Tab[5]={1,2,3,4,5}; return (Tab);} đầu ra 1 2 3 4 5 Và sau đây, chúng ta sẽ thảo luận về chi tiết chương trình
Lưu ý rằng một con trỏ, không phải một mảng, được định nghĩa để lưu trữ địa chỉ mảng được trả về bởi hàm. Cũng lưu ý rằng khi một biến cục bộ được trả về từ một hàm, chúng ta phải khai báo nó là tĩnh trong hàm Con trỏ hàmNhư chúng ta đã biết theo định nghĩa rằng con trỏ trỏ đến một địa chỉ trong bất kỳ vị trí bộ nhớ nào, chúng cũng có thể trỏ đến phần đầu của mã thực thi dưới dạng các hàm trong bộ nhớ. return_type (*function_name)(arguments) Bạn phải nhớ rằng các dấu ngoặc đơn xung quanh (*tên_hàm) rất quan trọng vì không có chúng, trình biên dịch sẽ nghĩ tên_hàm đang trả về một con trỏ kiểu_trả_về. #include <stdio.h> void Hi_function (int times); /* function */ int main() { void (*function_ptr)(int); /* function pointer Declaration */ function_ptr = Hi_function; /* pointer assignment */ function_ptr (3); /* function call */ return 0;} void Hi_function (int times) { int k; for (k = 0; k < times; k++) printf("Hi\n");} đầu ra Hi Hi Hi
Hãy nhớ rằng tên hàm trỏ đến địa chỉ bắt đầu của mã thực thi giống như tên mảng trỏ đến phần tử đầu tiên của nó. Do đó, các hướng dẫn như function_ptr = &Hi_function và (*funptr)(3) là đúng. Mảng con trỏ hàmMột mảng các con trỏ hàm có thể đóng vai trò chuyển đổi hoặc câu lệnh if để đưa ra quyết định, như trong chương trình tiếp theo Bạn có thể có một danh sách các hàm trong Python không?Trong Python, bạn có thể sử dụng hàm danh sách để tạo một tập hợp có thể thao tác cho phân tích của bạn. Bộ sưu tập dữ liệu này được gọi là một đối tượng danh sách. Mặc dù tất cả các phương thức đều là các hàm trong Python, nhưng không phải tất cả các hàm đều là phương thức.
Con trỏ hàm trong Python là gì?Không, chúng tôi không có bất kỳ loại Con trỏ nào trong ngôn ngữ Python . Các đối tượng được truyền cho hàm theo tham chiếu. Cơ chế được sử dụng trong Python giống hệt như truyền con trỏ theo giá trị trong C. Chúng tôi có các biến Python không phải là con trỏ.
Tất cả các chức năng trong Python là gì?Hàm tích hợp trong Python Biến có phải là con trỏ trong Python không?Sê-ri. Chuyển nhượng và đột biến
. Cách các biến của Python hoạt động thường có thể gây nhầm lẫn cho những người mới sử dụng Python, cả những lập trình viên mới và những người chuyển từ các ngôn ngữ khác như C ++ hoặc Java. they're pointers that reference objects. The way Python's variables work can often confuse folks new to Python, both new programmers and folks moving from other languages like C++ or Java. |