C语言中能否灵活应用指针就能看出你的C语言功底如何,接下来是我对在学习指针过程中,对一下较为苦涩概念的理解及总结。
一、指针的运算
指针的运算可归纳为以下三部分:
1、指针 +/- 整数
一般来说,此类运算只是左右移动指针所指向数组元素的位置而已;若指针指向的是&数组名,此时其加1,则移动的是一个数组了,不是一个元素;
2、指针 - 指针
此类是用与求两指针间数组元素的长度(两指针需指向同一数组)
3、指针的关系运算(<、<=、>、>=)
此时可通过地址大小的比较来遍历数组
具体事例有以下代码:
void main(void)
{
int a[5];
int *p = a;
int *q = &a[4];
int i = 0;
for( ; p<=q; p++)
{
*p = i;
i++;
}
}
二、常量指针与指针常量的理解
1、常量指针:const char *p1
可以这么理解:去掉类型名为const (*p1),常量的指针,即指向一个常量的指针,特点:指向可以改变,当必须指向的变量必须是一个常量;
2、指针常量:char * const p2
指针的常量,即该指针是一个常量,特点是:指针的指向不能改变,但是能改变其所指向变量的值;
void main(void)
{
const char *p1; //等价于char const *p1;
char * const p2;
char a = 'a', b = 'b';
char A = 'A', B = 'B';
p1 = &a;
*p1 = 'A'; //错误,不能改变其变量的值,其指向是一个常量
p1 = &A; //正确,可以改变指向的变量
p2 = &b;
*p2 = 'B'; //正确,可以改变所指向变量的值
p2 = &B; //错误,该指针是一个常量,不可以改变指向的变量
}
三、指针函数与函数指针
指针函数:指针类型的函数,返回值是一个指针(注意:该指针要是一个全局变量的地址),如:
char *p(int *, int *);
函数指针:函数的指针,指向某一类函数类型的指针
char (*pfun)(int *, int *);