46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Passing pointers to funtions | |||
|  | localeTitle: 将指针传递给功能 | |||
|  | --- | |||
|  | # 将指针传递给功能
 | |||
|  | 
 | |||
|  | C允许将指针传递给函数。要实现此目的,只需将参数声明为指针类型即可。 当您想要修改超出该函数范围的变量时,这种传递函数的方法很有用。 | |||
|  | 
 | |||
|  | ```C | |||
|  | // incorrect implementation of swap  | |||
|  |  #include <stdio.h>  | |||
|  |  void swap(int a, int b){  | |||
|  |     int c;  | |||
|  |     c = a;  | |||
|  |     a = b;  | |||
|  |     b = c;  | |||
|  |  }  | |||
|  |  int main(){  | |||
|  |     int var1 = 10;  | |||
|  |     int var2 = 20;  | |||
|  |     swap(var1, var2);  | |||
|  |     printf("Value of var1: %d \n", var1); // prints 10  | |||
|  |     printf("Value of var2: %d \n", var2); // prints 20  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | 在此代码示例中,交换函数不能按预期工作,因为它交换了仅存在于该函数范围内的两个变量。为了解决这个问题,我们进行了如下所示的修改。 | |||
|  | 
 | |||
|  | ```C | |||
|  | // correct implementation of swap  | |||
|  |  #include <stdio.h>  | |||
|  |  void swap(int* a, int* b){  | |||
|  |     int c = *a;  | |||
|  |     *a = *b;  | |||
|  |     *b = c;  | |||
|  |  }  | |||
|  |  int main(){  | |||
|  |     int var1 = 10;  | |||
|  |     int var2 = 20;  | |||
|  |     swap(&var1, &var2);  | |||
|  |     printf("Value of var1: %d \n", var1); // prints 20  | |||
|  |     printf("Value of var2: %d \n", var2); // prints 10  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | 在第二个代码示例中,您只能更改变量的值,因为您不断地在函数内取消引用指针而不是尝试直接更改值 |