ポインタはデータ型であり、メモリユニット
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;
}