常见混淆名词

像连着的两个词,前面一个通常是修饰部分,中心词是后面的一个词

  1. 常量指针和指针常量
    常量指针:指向常量的指针,指针指向的地址内容不可修改
    指针常量:指针是常量,它是不可改变地址的指针
    举例:
    char* const p1;
    const char* p2;
    char const * p3;
    如何判断上述两个变量是常量指针还是指针常量,看靠近变量近的是什么const 还是 *。谁离变量近,谁就在名称后面。比如char* const p1,靠近p1近的是const(常量),那它就是指针常量;const char* p2,靠近p2近的是*(指针),那它就是常量指针,同样p3也是常量指针。

  2. 指针数组和数组指针
    指针数组:元素是指针的数组;
    数组指针:指向数组的指针;
    举例:
    int *a[10];
    int (*a)[10]);
    如何判断上述两个变量是指针数组还是数组指针。根据右左原则,看变量先和数组[]还是指针*结合
    右左原则:
    首先从未定义的标识符(定义的变量名)开始阅读;
    再从最里面的圆括号看起,遇到右括号时调转阅读方向,看左边的;
    解析完里面括号里面所有的东西,就跳出圆括号;然后再往右看,右边看完,再往左看。

    看int *a[10],首先a跟[10]结合,所以a实质是个数组,根据起名原则,中心词都是再后面,所以int *a[10]是指针数组:一个存放了10个int型指针元素的数组。
    再看int (*a)[10]);首先a往右是右括号,看左边,是*,所以a实质是个指针,根据起名原则,所以int (*a)[10])是数组指针:指向一个长度为10、类型为int的数组

  3. 指针函数和函数指针
    指针函数:返回指针的函数,本质是函数
    函数指针:指向函数的指针
    举例:
    int *fun(int* a, int b) { return a+b; }
    int (*p)(int, int);
    指针函数本质是函数,其定义是:
    返回类型标识符 *返回名称(形参列表) {函数体}
    且fun首先和函数标识()所以int *fun(int* a, int b) { return a+b; }是指针函数
    int (*p)(int, int)可见p是与*结合,所以int (*p)(int, int)是函数指针,pp一个指向int (*fun)(int x, int y)类型的函数指针,该函数有两个整形参数并返回一个整型数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值