c语言关于const的面试常识

      今天晚上琢磨了一个晚上,终于大致弄明白const的用法其总结如下:

关于const的含义:

const int a;

int const a;

const int *a;

int * const a;

int const * a const;

 

         前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。我之前也难以看出,究竟那个是变的,那个不变?必须提醒一下*a是代表值而a是代表指针。那么就有一下的结论了

      

1)const在前面(即放在类型前面)
const int a; //a是const
const char *a; //*a是const, a可变
const char* const a; //a和*a都是const
 
2)const在后面,与上面的声明对等
int const a; //a是const
char const * a; //*a是const, a可变
char* const a; //a是const,*a可变
char const* const a; //a和*a都是const
 
特例分析:
const int *a、int const *a、int *const a三种特例
 
①const int *a ( 整型数是不可修改的,但指针可以
②int const *a【暂时不知道】
③int *const a ( 指针指向的整型数是可以修改的,但指针是不可修改的)
然后把上面的进行一一对应:
 
                  const int *a( 整型数是不可修改的,但指针可以)
对应:       const char *a(*a是const,a是可以改变)
 
                  int const *a【暂时不知道】
对应           char const *a(*a是const,a是可以改变)
从而得除const放在修饰类型的前面或者后面,不影响结果
 
                  int *const a(指针指向的整型数是可以修改的,但指针是不可修改的)
对应           char *const a(*a是可以改变的,a是const)
 
 
结论:const与谁靠得最近就影响到谁,const放在数据类型(char、int ......)前后都是相同的。
 
 
 
 
 
 
 
 
 
 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值