指针变量&普通变量
step1:定义指针类型(取决于与其相关联普通变量的类型) int*p,a=5;
step2:将指针与某一变量关联 指针=&变量
*指针=指针指定的变量的值 eg.*p=5
改变指针的方向:新定义一个指针
eg.
int*p,*q;
int*r;
r=p;
p=q;
q=r;
指针变量&一维数组
关联:指针=&数组名[某数]
赋值:*指针=指针指定的变量值
eg.
int *p,*q,a[3]={2,4,6};
p=&a[0];
q=&a[1];
*p=2*(*p); //即:a[0]=2*a[0],将2倍的a[0]赋给a[0]
More.指针+i=&数组名[某数+i]
eg.
int *p,*q,a[3]={2,4,6}; //定义指针与数组
p=&a[0]; //关联指针与数组
q=&a[1];
*(q+1)=*(p+2); //*(q+1)=*(p+2)=a[2]
形式转换
【表示1】
for(i=0;i<5;i++)
printf("%d\t",*(p+i));
【表示2】
for(p=&a[0];p<=&a[4];p++)
printf("%d\t",*p);
区别:
&数组名[某数]=数组名+某数
数组名[某数]=*(数组名+某数)
【一维数组相关函数】
形式参数:在函数定义的函数首部,函数名后的括号中说明的变量(简称:形参)
实在参数:当一个函数被调用时,需要在调用处给出对应的调用时需要的参数(简称:实参)
数组名→指针变量:
形参:函数声明:数组[ ]→*p
………函数解释:数组名[i]→*(p+i)
实参:函数使用:数组名→q(使用前需先关联)(q为指针名)
指针&二维数组
关联:指针=&数组名[数a][数b]
*指针=指针指定的变量的值
指针+i=&(数组名[数a][数b]后第i个元素)
eg.int *p,a[2][2]; *p=&a[0][0]; *q=&a[1][1]; 则*(p+1)=a[0][1]; *(q-1)=a[1][0];
形式变换:
&数组名[数a][数b]=数组名[数a]+数b
……………………=数组名[0]+a*列数+b
数组名[数a][数b]=*(数组名[数a]+数b)
【二维数组相关函数】
数组名→指针变量:
形参:函数声明:数组名[ ][某数]→*p
………函数解释:数组名[i][j]→*(p+i*列数+i)
实参:函数使用:数组名→*数组名
【指向行变量】
step1:定义 (*p)[列数]
step2:关联 p=二维数组名+某数n
*(*(p+i)+j)
=二维数组名[n+i] [j]
指针变量&函数
定义:类型(*p)(类型 类型)
关联:p=函数名
函数名=(*p)
eg.
int max(int x,int y); //定义函数类型
int (*p)(int,int); //定义指针变量
p=max; //关联指针&函数
返回指针值的函数
指针&数组的数值关系暨小结
关联:指针=&值
………值=*指针
简便写法:&a[i]=a+i
……………a[i]=*(a+i)