ฟังก์ชัน C อ้างอิงโทร
อ้างอิงถึงพารามิเตอร์วิธีการเรียกร้องให้คัดลอกพารามิเตอร์ที่อยู่พารามิเตอร์อย่างเป็นทางการส่งผ่านไปยังฟังก์ชั่นฟังก์ชั่นภายในที่อยู่ที่ใช้ในการเข้าถึงพารามิเตอร์ที่เกิดขึ้นจริงการเรียกร้องให้ใช้ ซึ่งหมายความว่ารูปแบบการแก้ไขของพารามิเตอร์ที่ส่งผลกระทบต่อค่าพารามิเตอร์ที่เกิดขึ้นจริง
ค่าผ่านอ้างอิงตัวชี้อาร์กิวเมนต์ที่ถูกส่งผ่านไปยังฟังก์ชั่นเช่นเดียวกับค่าอื่น ๆ ส่งผ่านไปยังฟังก์ชั่นเดียวกันดังนั้นดังนั้นการแลกเปลี่ยนฟังก์ชั่นดังต่อไปนี้ () คุณต้องประกาศอาร์กิวเมนต์ฟังก์ชั่นเป็นประเภทตัวชี้ค่าฟังก์ชั่นสำหรับจุดพารามิเตอร์ในการแลกเปลี่ยนสองตัวแปรจำนวนเต็ม
/* 函数定义 */ void swap(int *x, int *y) { int temp; temp = *x; /* 保存地址 x 的值 */ *x = *y; /* 把 y 赋值给 x */ *y = temp; /* 把 temp 赋值给 y */ return; }
สำหรับข้อมูลเพิ่มเติมรายละเอียดตัวชี้ C แวะไปที่ C - ชี้ ส่วน
ตอนนี้ให้เราผ่านโดยอ้างอิงถึงการแลกเปลี่ยนฟังก์ชั่นการโทร ():
#include <stdio.h> /* 函数声明 */ void swap(int *x, int *y); int main () { /* 局部变量定义 */ int a = 100; int b = 200; printf("交换前,a 的值: %d\n", a ); printf("交换前,b 的值: %d\n", b ); /* 调用函数来交换值 * &a 表示指向 a 的指针,即变量 a 的地址 * &b 表示指向 b 的指针,即变量 b 的地址 */ swap(&a, &b); printf("交换后,a 的值: %d\n", a ); printf("交换后,b 的值: %d\n", b ); return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
ก่อนที่จะเปลี่ยนค่า: 100 ก่อนที่จะเปลี่ยนค่า B: 200 หลังจากการแลกเปลี่ยนค่า: 200 ค่าต่อไปแลกเปลี่ยน B: 100
ตัวอย่างข้างต้นแสดงให้เห็นว่ามีค่านิยมดั้งเดิมของสายที่แตกต่างกันการอ้างอิงโทรภายในฟังก์ชั่นในการเปลี่ยนค่าของ A และ B ในความเป็นจริงเปลี่ยนฟังก์ชั่นที่อยู่ด้านนอก A และ B ค่า