指针是一种数据类型,与内存单元地址密切相关
1.指针与变量
int a=1,*p=&a;//p是指向a
cout<<"a的地址"<<&a<<"\n";
cout<<"a的值"<<a<<"\n";
cout<<"p的地址"<<&p<<endl;
cout<<"p的值"<<p<<endl;
cout<<"p指向的变量"<<*p<<endl;
2.指针与函数
指针作为函数参数的作用
函数的形参接受的是实参的地址,通过指针间接访问实现值传递。
设置多个指针参数,可以从函数中带回多个返回值。
传递一块连续存储的数据块,传递首地址比传数据时间开销小。
//指针作为函数参数 计算一维数组平均值 做大值 最小值
double Faver(int s[],int n,int * max,int * min)
{
double sum=0.0;
*max=s[0];
*min=s[0];
//s[]为输入数组,n为数组长度,max为指向最大值元素指针 min为指向最小值元素指针
for(int i=0;i<n;i++)
{
sum=sum+s[i];
if(s[i]>*max)
{
*max=s[i];
}
if(s[i]<*min)
{
*min=s[i];
}
}
return sum/n;
}
3.指针作为函数返回值
//去字符串前面空格
char * Itrim(char str[])
{
int k=0;
while(str[k]==' ')
{
k++;
}
int j=k;
while(str[j]!='\0')
{
str[j-k]=str[j];//每个字符前移K位
j++;
}
str[j-k]='\0';//结束符
return &str[0];
}
4.指向函数的指针
double Length(double r)
{//求圆周长
return r*3.14*2.0;
}
double Area(double r)
{//求圆面积
return 3.14*r*r;
}
double Function(double (* f)(double),double x)
{
return (*f)(x);//间接调用f指向的函数
}
int main()
{
//指向函数的指针
int r=2.0;
cout<<Function(Area,r)<<endl<<Function(Length,r);
return 0;
}