C学习笔记 - 指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C学习笔记 - 指针相关的知识,希望对你有一定的参考价值。

指针与数组

    int a[] = {1,2,3,4,5};
    int *p;
    p = a;
    printf("*a = %d\n",*a);
    printf("*p = %d\n",*p);
    printf("a[1] = %d\n",a[1]);
    printf("p[1] = %d\n",p[1]);

数组名就是数组的首地址。以上输出结果都一样。数组名基本上和指针等价。但a是常量,不可以进行a++或者a+=1等操作,而指针p则可以。

指针数组和数组指针

数据类型 *变量名[]
//首先它是一个数组,数组的元素是一个指针,也就是说每个元素存储的内容是一个地址
int *a[5];    

数据类型 (*变量名)[]
//首先它是一个指针,该指针指向一个数组
int (*a)[5];

指针函数和函数指针

类型标识符 *函数名(参数表)
//指针函数,它是一个函数,返回值是一个指针
int *f(x,y);

类型标识符 (*函数名)(参数表)
//函数指针
int (*f)(int x);

//函数地址赋给函数指针
f = &Function
f = Function

//使用函数指针调用函数
x = (*f)();   //这种方法明确的指出了是通过指针调用函数 
或者
x = f();

指针计算

自增自减:按它所指数据类型的长度进行增减

    int a = 10;
    int *p;
    p = &a;
    printf("%p\n",p);
    p++;
    printf("%p\n",p);

运行结果:

0x7fff5fbff7fc
0x7fff5fbff800

可以看到两个结果相差4,也就是int所占的字节长度。

 

以上是关于C学习笔记 - 指针的主要内容,如果未能解决你的问题,请参考以下文章

《深入理解C指针》学习笔记--- 指针之外

C语言学习笔记(12)指针进阶

C语言进阶学习笔记二指针的进阶(练习篇)

C语言基础学习笔记六初始指针(重点必看)(详细讲解+代码举例+练习巩固)

C指针笔记

[学习笔记]C语言中关于指针的详解1