C语言指针
指针
基本知识
指针就是一个地址,是可以根本改变的东西
&是取地址符
输出%p(place)表示输出地址
tips
指针是可以比较大小的!
指针大小的比较只允许最后一个和下一个比较,一般不允许第一个和前一个比较
指针的本质其实也是一个变量
指针类型
指针类型决定了指针解引用的时候访问空间的大小,同时也决定了指针+1时改变的字节
int *四个字节
char* 一个字节
doouble* 八个字节
int ppa=&pa二级指针
注意:指针使用之前必须初始化,一般初始化为NULL
间接寻址运算符
scanf printf都是直接寻址,
指针运算符*是间接寻址运算符,(与取地址符&是可逆运算)
按值调用与模拟引用调用
指针的本质作用:从函数返回多个值
本质就是通过交换指的方式来改变地址的指向,从而改变数值
函数指针
指向函数的指针,本质还是指针
作用:使得某一函数的功能系统化,普遍化,可修改化,传递不同的函数名来调用不同的函数
方法:数据类型(*指针变量名)(形参列表)
int Fun(int a,int b); int (*f)(int ,int); f=Fun;
典例:计算定积分,通用排序函数
排序
void SelectionSort(int a[].int n,int (*compare)(int,int)) { int i,j,k; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if((*compare)(a[j],a[k]) ) k=j; } } }
定积分
float Intergral(folat (*f)(float),float a,float b) { float a,b; int n=100,i; a=((*f)(a)+(*f)(b))/2; h=(b-a)/n; for(i=1;i<n;i++) { s=s+(*f)(a+i*h); } return s*h; } y1=Integral(F1,0.0,1.0); y2=Integral(F2,0.0,3.0);
总结
指针的使用是在调用函数的时候使用解引用修改数值来修改
传地址,改数值!
指针加减整数相当于对应数组的加减
指针减指针得到的是中间元素的个数
须知少时凌云志,曾许人间第一流
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具