指针
1.指针
2.字符串指针———c语言的灵魂
1.交换两个变量的值
#include <stdio.h>
void swap(int *pa,int *pb){
int t=*pa;
*pa=*pb;
*pb=t;
}
int main(){
int a=5;
int b=6;
swap(&a,&b);
printf("%d %d",a,b);
}
2.函数返回多个值,某些值就只能通过指针返回
//实际上传入的参数就是返回结果的
#include <stdio.h>
void minmax(int a[],int len,int *max,int *min){
for(int i=0;i<len;i++){
if(a[i]<*min){
*min=a[i];
}
if(a[i]>*max){
*max=a[i];
}
}
}
int main(){
int a[100];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int min,max;
minmax(a,sizeof(a)/sizeof(a[0]),&max,&min);
printf("%d %d",min,max);
}
写下来这个题目的原因是首先可以进行计算数组的长度,再者是可以很好的利用指针进行多个返回的效果。
3.函数返回运算的状态,结果通过指针返回
//java中运用异常来处理
指针与数组
在函数里面,int a[]其实是一个指针类型
- 数组变量本身表达一个地址
such as: void (int a[]){}
如果int *p;
printf("%d",*p);
printf("%d",p[0]);
输出结果相同。
-
数组之间不能被赋值
-
数组其实就是一个const的指针
指针与const
-
表示const是不能被改变的值,也可以说是指针的地址。
-
int *const p=&i; 地址不能被修改 上面所指。 下面来说 const int *p=&i; 表示不能通过指针去改变变量的值 such as{ *p=26;//error i=26;//OK p=&j;//OK }
转换
总是可以将一个非const的值转换成const的
void f(const int *x);
当要传递的参数的类型比地址还要大的时候。
既能用于比较少的字节数值给参数,又能避免函数对外面变量的修改。
指针运算
-
#include <stdio.h> int main(){ char ac[]={0,1,2,3,4,5,6}; char *p=ac; p+1//是地址的后传 } //指针的地址(顺带提一嘴,char是1个字节)
指针减法的意义是从一个地址到另一个地址,中间可以存放多少个这样字节的数据。
//*p++; //取出p所指的那个数据来,然后将p移到下一个位置 //*的优先级不大于++ //下面写一下用指针进行遍历 //常用于数组类 #include <stdio.h> int main(){ char ac[]={0,1,2,3,4,5,6,7,8,9}; char *p=&ac[0]; int i; for(i=0;i<sizeof(ac)/sizeof(a[0]);i++){ printf("%d",ac[i]); } while(*p!=-1){ printf("%d",*p++); } int a[]={0,1,2,3,4,5,6,7,8,9}; int *q=a;//传进第一个值 return 0; }
-
-
本文作者:EricFirst001
本文链接:https://www.cnblogs.com/cuers/p/17541628.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步