指针是C语言的重点与难点,利用指针可以实现存储空间的动态分配,减少空间上的浪费。
指针变量是一种特殊类型的变量,它里面存储的就是内存的地址。
1、指针的定义格式:类型标识符 *标识符
eg:float *pointer_1;
ps1:一个指针变量只能指向同一类型的变量。
2、指针变量的初始化
一般形式:[存储类型] 数据类型 *指针名=初始地址值
eg:int *p1=&a;
3、指针变量必须先赋值,在使用。
4、当函数返回值为指针型数据时,这种函数称为指针型函数,简称指针函数。
定义格式如下:数据类型 *函数名(形参表)
5、二级指针简单理解就是指针的指针,经一个指针变量的地址再送给一个新的指针变量,则这个新指针变量相对前一个指针所指的变量,就形成一个二级指针。如下程序段:
int i;
int *p;
int **p;
p=&i;
pp=&p;
综合例子:
#include"stdio.h"
#define nmax 50
int main()
{
int i,k,m,n,num[nmax],*p;
printf("\n please input the tatal of number:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=k=m=0;
while(m<n-1)
{
if(*(p+i)!=0)
k++;
if(k==3)
{
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n)
i=0;
}
while(*p==0)
p++;
printf("%d is left\n",*p);
return 0;
}
运行结果: