时间长了,有很多概念性的东西自己竟然描述不出来,虽然知道怎么用,但是描述不出来就是能力不能体现的一种。
语言中,指针是一种类型,被称为“指针类型”。指针类型描述的是一个地址,这个地址指向内存中另外一个对象的位置。简单地说,指针表示的是它所指向对象的地址。
1、比较point,*point,&point三者的区别
对于int * point;
point:是指针变量,其内容是地址量。
*point:是指针变量的目标变量,即指针指向的那个变量,其内容是数据。
&point:是指指针变量本身所占据的存储地址。
2、指针与数组
用指针和数组名在访问内存中的数据时,他们的表现形式是等价的,因为他们都是地址量。
数组名表示整个数组的首地址,可以看作是固定地址的指针,不能被赋值。
数组名无须赋初值,而指针在使用前必须赋初值。
3、字符指针和字符串
字符串是一个字符数组,字符串以‘ ’结束。printf函数的%s格式输出字符时,是从给定的地址开始,到遇上第一个‘ ’字符时结束。
对字符指针初始化,是将字符串的首地址赋给指针。
4、指针型函数
所谓指针型函数,即返回值是指针(地址)的函数。
5、多级指针
指向指针的指针(**p)就是二级指针,指向指针的指针的指针(***p)是3级指针。
多级指针类似于间接寻址。
6、指向函数的指针
C语言中的函数名表示函数的首地址,即函数执行的人口地址。
定义形式:[存储类型][数据类型标示符](*指向函数的指针变量名)();
例子: int(*fun)();//指向函数的指针 , int * fun(); //指针型函数,注意(* fun)括号不能少
7、动态指针
当需要一大片内存的时候,最好使用动态分配。
使用malloc函数:void * malloc(size_t size)。
例子:
int * pn=malloc(10*sizeof(int));
double *pd=malloc(10*sizeof(double));