zoukankan      html  css  js  c++  java
  • 【专接本课程】c语言指针学习

    #include<stdio.h>
    //定义一个函数交换两个变量的值
    void swap(int p,int q);
    void swap_2(int * p,int * q);
    void swap_3(int * p,int * q);
    
    void main(){
    	
    	int a = 5,b = 3;
    	
    	//swap(a,b);
    	//swap_2(a,b); 编译失败 不能将int型的变量 传递给int * 的变量
     	//swap_2(&a,&b);
     
    	swap_3(&a,&b);
    
    	printf("a=%d,b=%d
    ",a,b);
    
    
    }
    
    //理解 结果改变了 原因是通过实参传递过来的是a b的值,在函数中交换的是 *p 表示a * q 表示b 所以申明变量 
    //直接修改了a b的值
    void swap_3(int * p,int * q){
    
    	int temp = * p;
    	* p  = * q;
    	* q = temp;
    
    }
    
    
    //理解:结果是没有改变的 原因是,通过实参传递过来的是a和b的内存地址。
    //形参 p表示存储的a的内存地址 * p = q   ---- q表示存储的b的内存地址 * q = b
    //在函数调用的时候,我们使用的是 p q 交换的只是 p q存储a b的地址。所以结果并没有改变  
    void swap_2(int * p,int * q){
    	
    	printf("* p = %d
    ",*p);
    	printf("* q = %d
    ",*q);
    
    	printf("p = %d
    ",p);
    	printf("q = %d
    ",q);
    
    	int * temp = p;
    	p = q;
    	q = temp;
    
    	printf(" swap after-----
    ");
    
    	printf("p = %d
    ",p);
    	printf("q = %d
    ",q);
    
    }
    
    //理解:没有交换值,原因是我们通过调用swap函数值,通过实参传递过来的数据,只是实参数据的一份拷贝
    //所以改变的只是形参的p q的值
    void swap(int p,int q){
    	int temp = p;
    	p = q;
    	q = temp;
    	printf("p=%d,q=%d
    ",p,q);
    
    }
  • 相关阅读:
    2018-8-10-win10-uwp-商业游戏-1.2.1
    2018-8-10-win10-uwp-商业游戏-1.2.1
    2019-3-1-获取-Nuget-版本号
    2019-3-1-获取-Nuget-版本号
    2019-9-24-dotnet-remoting-抛出异常
    2019-9-24-dotnet-remoting-抛出异常
    2018-2-13-C#-解析-sln-文件
    2018-2-13-C#-解析-sln-文件
    2018-10-19-jekyll-添加-Valine-评论
    2018-10-19-jekyll-添加-Valine-评论
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860914.html
Copyright © 2011-2022 走看看