指针

来源:互联网 发布:网络信息有限公司名字 编辑:程序博客网 时间:2024/06/07 15:42

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 0
原创粉丝点击