• 【原创】指针变量作为函数参数要点注意+main函数中值是否改变


    指针变量作为函数参数要点注意(已写至笔记)
    1传参指针不加*(main中函数)
    2收参指针要加*(被main调用的函数)
    3传参指针名可与收参指针名不同,不影响
    4【问】如何看主函数中指针所指内容是否改变
    【答】调用函数中若未在改变传入指针的指向值前改变指针指向(即未在改变*p前改变p指向),则主函数中指针所指内容会变

    【例1】如下代码的swap函数交换了main中传入的数,指针变量作为函数参数往往都是想要达到这种效果

    #include
    
    void swap(int *q1,int *q2){ //接收指针类型参数,故要加*(参数名可与main中不同,为体现此参数名写q而非p) 
    	int tmp;
    	tmp=*q1;
    	*q1=*q2;
    	*q2=tmp; 
    }
    
    int main()
    {   
        int a[150];
        int tmp;
        
        for(int i=0;i<5;i++){
        	scanf("%d",&a[i]); 
        }
        
        //小到大排序,选择排序 
        for(int i=0;i<4;i++){
        	int minn=i; //minn存放最小数的下标   
        	for(int j=i+1;j<5;j++){
        		if(a[j]<a[minn]){
        			minn=j;
        		}
        	} 
        	int *p1=&a[i];
    		int *p2=&a[minn];
        	swap(p1,p2); //传参别加*,要传地址才能变   
    
        }
        
        for(int i=0;i<5;i++){
        	printf("%d ",a[i]);
        }
        
        
        
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    【例2】但也有少量为了出而出的题在调用函数中改变p前改变就了p指向,导致main中仍不变
    ·注意fun函数中的p=&b;此句改变
    p前就改变了p的指向,main中未变,若无此句main就变为10

    #include
    
    void fun(int *p){ 
    	int b=10;
    	p=&b; //改变*p前就改变了p的指向,main中未变(若无此句main就变为10) 
    	*p=b;
    }
    
    int main()
    {
        int a=5,*p=&a;
        fun(p); 
        printf("%d\n",a); //输出*p的值同a没变,5 
        
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    MATLAB编程:逐帧读取视频并转换为图片格式
    js 操作符
    【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
    Java练习题2022-1
    字节面试:如何解决MQ消息积压问题?
    14 STL-常用算法
    程序设计:C++ 一个用目录结构构建索引的类
    RCNN系列网络的理解
    网络安全(黑客)自学
    YOLOv7训练数据集
  • 原文地址:https://blog.csdn.net/m0_57050876/article/details/134089486