易混淆的概念

1.

数组指针:int (*p)[10]       为p指针,指向一维数组;也叫行指针,指向整个数组;元素表示:(*b)[i];指向二维数组:p=&c;

指针数组:int *p[10]         为一个数组,数组元素为指针,元素表示:*p[i];指向二维数组:

两者都可以用来表示二维数组

2.

函数指针:int (*p)()     p为指针,指向一个返回值为int型变量的函数

int (*f) (int x); /* 声明一个函数指针 */

 f=func; /* func函数的首地址赋给指针f */

指针函数:int *p()        p为函数,返回值为指针

3.

常量指针const int *p;    

              int const *p;   
                指向常量的指针。 常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。

指针常量:int *const p;    指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一生。

eg:int i = 3;

int j = 5;

const int * p1= &i;

int *const p2=&j;

则:

p1 = &j; /* 正确,p可以被重新赋值 */

*p1 = j; /* 错误,因为他改变的是p所指向的变量的值。*/

p2=&i;/* 错误,因为指向的地址不可以重新赋值,即不能改变p2的值。*/

*p2=4; /* 正确,p2指向的内容可以改变 */

常量指针表示一个指针指向的变量为常量及带有const属性(e.x. const int *p) , 而指针常量表示一个指针本身为常量及指针本身带有const属性(e.x. int *const p), 常量指针指向的对象由于有const属性, 无法直接改变, 但是指针本身值(及指针指向的内存地址)可以改变, 而指针常量则是指针本身有const属性, 指针的值(及指针指向的内存地址)无法直接改变, 而该地址内的变量可以改变。

本质都是指针。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值