指针

1.指针数组

#定义:指向指针的数组。
#理解: 一个存放int类型的数组称为整型数组,那么存放指针的数组就叫指针数组。

int *arr[10];

#指针数组中的每一个元素均为指针,指针数组中的元素可以表示为“*(*(arr+i))”,又因为“()”的优先级较“”高,且“”是右结合,因此可以写作**(arr+i)
#由于数组元素均为指针,因此arr是指向i+1个元素的指针。

2.数组指针

定义:数组名的指针,即数组首元素地址的指针。即是指向数组的指针。

int(*p)[10];

p即为指向数组的指针,又称数组指针。
例如:

int a[4][5];
int (*p)[5]=a;
#这里a是一个二维数组的数组名,相当于一个二级指针常量;p是一个指针变量,它包含5个int元素的一维数组,此时p的增量以它所指向的一维数组长度为单位;*p+i是二维数组a[0][i]的地址;*(p+2)+3表示a[2][3]地址,*(*(p+2)+3)表示a[2][3]的值。
举例

char c[][3] = {"妹", "妹", "你", "坐", "船", "头"};
char (*p)[3];
int i;
p = c;
for(i=0; i<6; i++)
{
printf("%s, ", *(p+i));        //*p++;
}
printf("\n");              //p=c;/p--;
for(i=5; i>=0; i--)
{
printf("%s\n", *(p+i));     //*p--;/*--p;
}

3.函数指针

函数类型”说明函数的返回类型,“(标志符指针变量名 )”中的括号不能省,若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。

函数指针的申明方法为:
返回值类型`(*指针变量名)([形参列表]);

int fun(int x);//声明一个函数
int (*p)(int x);//声明一个函数指针
p=fun;//将fun函数的首地址付赋给指针p

例子:

include <stdio.h>
int max(int x,int y)
{
return ( x > y ? x : y); 
}
int main()
{
int (*ptr)(int, int);
int a, b, c;
ptr = max;
scanf("%d%d", &a, &b);
c = (*ptr)(a, b);
printf("a =%d, b =%d, max = %d", a, b, c);
return 0;
}

4.指针函数

定义:指针函数是指带指针的函数,即本质是一个函数。
格式:

返回类型标识符 *函数名称(形式参数表)
{函数体}

例子:

#include<stdioh>
float *find(float(*pionter)[4],int n);//函数声明
int main(void)
{
    static float score[][4]={{60,70,80,90},{56,89,34,45},{34,23,56,45}};
    float *p;
    int i,m;
    printf("Enter the number to be found:");
    scanf("%d",&m);
    printf("the score of NO.%d are:\n",m);
    p=find(score,m-1);
    for(i=0;i<4;i++)
        printf("%5.2f\t",*(p+i));
    return 0;
}
float *find(float(*pionter)[4],int n)/*定义指针函数*/
{
    float *pt;
    pt=*(pionter+n);
    return(pt);
}

5.指向函数指针数组的指针

注:表示还没懂.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值