基础指针(待续)

  • 首先说明下指针数组和数组指针

blob.png

  1. 指针数组:int * parr[3];

    结合性 int *(parr[3]);

    指针数量:3;

    PS:

    1. 首先作为数组为一个整体。int* 表示数组里保存的是地址。

    2. parr不能单独使用,parr[n]作为指针才是可操作的

    3. p[n]作为int * ,++步长为sizeof(int)

  2. 数组指针:int (*arrp)[n];

    PS:

    1. 这里只有一个指针arrp

    2. 指针步长为sizeof(int)*n

  • 接下来说一下 int(*p)(int) 和 int *(*p(int))[3].

  1. int(*p)(int)

    (OV3AO$1I5EW@A%8ABI4W~G.png

    blob.png

    很简单指向参数int返回值int的函数指针

  2. int *(*p(int))[3]

    blob.png

    没搞定,待续。。。

    PS:p(int)结合。参数为int,返回值为 int *(*)[3] 指针数组的指针。

学习笔记

  1. 指针类型

    把指针声明语句的指针名字去掉,剩下的部分就是指针的类型。

    (1)int (*ptr)[3];//指针类型是 int(*)[3]

    (2)int *(*ptr)[4];//指针类型是 int *(*)[4]

  2. 指针所指向的类型

    当用指针访问所指向的内存区时,指针所指向的类型决定了所取内容的大小和步长

    把指针声明语句中的指针名字和名字左边指针*去掉,剩下的就是指针所指向的类型。

    (1)int *p; //指针所指向的类型是int

    (2)int (*p)[3];//指针所指向的内容是int ()[3]

    (3)int *(*p)[3];//指针所指向的内容是int *()[3]

    这里指针的类型(指针本身类型)和指针所指向的类型是两个概念.

  3. 指针的值

    指针的值就是本身存储的地址。所指向的内存区就是从指针的值所代表的内存地址开始,

    长度为sizeof(指针所指向的类型)的内存区。或者说指针的值是这块内存的首地址。

  4. 分析指针的思路:

    1. 这个指针的类型是什么?

    2. 指针指向的类型是什么?

    3. 指针指向哪里?


最后记一个指针解读通用的左右法则:

  The right-left rule: Start reading the declaration from the innermost parentheses, go right, and then go left. When you encounter parentheses, the direction should be reversed. Once everything in the parentheses has been parsed, jump out of it. Continue till the whole declaration has been parsed.  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值