C语言——数组与指针进阶(二)

来源:互联网 发布:淘宝评价怎么修改好评 编辑:程序博客网 时间:2024/06/05 20:25

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 *);

阅读全文
0 0