当前位置: 首页 > news >正文

【原创】指针变量作为函数参数要点注意

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

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

#include<stdio.h>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;
}

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

#include<stdio.h>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;
}
http://www.lryc.cn/news/209147.html

相关文章:

  • SpringMVC Day 04 : 数据绑定
  • 2.3.1 协程设计原理与汇编实现
  • J2EE项目部署与发布(Windows版本)->会议OA单体项目Windows部署,spa前后端分离项目Windows部署
  • Lua脚本语言
  • cat()函数和print()函数的区别
  • 宝塔面板安装Python和Flask(新版Python项目)
  • 火柴排队.
  • 改善游戏体验:数据分析与可视化的威力
  • GEE:本地影像上传到GEE的Assets中,并输入机器学习算法中作为特征变量
  • 【Mybatis源码】XMLConfigBuilder构建器 - 读取XML配置初始化Configuration对象
  • Python算法练习 10.28
  • 【java学习—八】单例设计模式(5)
  • 【设计模式】第4节:创建型模式之“单例模式”
  • NodeJS爬取墨刀上的设计图片
  • linux--
  • conda虚拟环境笔记收录
  • RGB-T Salient Object Detection via Fusing Multi-Level CNN Features
  • 安卓开发实例:方向传感器
  • [论文笔记]GTE
  • Prometheus字段解析
  • msigdbr hallmarks gsea broad研究所
  • 理解V3中的proxy和reflect
  • 实现寄生组合继承
  • ARM 账号注册报错 The claims exchange ‘Salesforce-UserWriteUsingEmail‘
  • 笔记:电子设备接地,接的到底是什么地?
  • PY32F002A系列单片机:高性价比、低功耗,满足多样化应用需求
  • 头歌的数据库的第三次作业的答案
  • 前端3D规划
  • appium操控微信小程序的坑
  • 6 个最佳 Windows 免费磁盘分区管理器