注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

0与1构筑世界,程序员创造时代

软件架构设计 Java编程

 
 
 

日志

 
 

C学习笔记 - 常量指针与指针常量 | C Language study note - constant and pointer  

2012-08-25 22:19:50|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
const 关键字在C语言中有点名不符实,用它修饰变量结果不是常量而是只读常量,#define定义的才是常量。可参考我的另外一篇文章《C - 编译错误:'XXX'的存储大小不是常量

const 修饰变量与数组

1、const 修饰变量。为只读变量,如修改在编译时会报错。
 #include <stdio.h>
 #include <stdlib.h>
 
 
int main(int argc, char *argv[])
 {
     const int x = 1;
     x = 99;
   // 编译报错 error: assignment of read-only variable ‘x’
    
    
return EXIT_SUCCESS
 }


2、const 修饰数组。为只读数组,如修改在编译时会报错。
 #include <stdio.h>
 #include <stdlib.h>
 
 
int main(int argc, char *argv[])
 {
     const int arr[] = {1, 2, 3};
     arr[0] = 99;
   // 编译报错 error: assignment of read-only location ‘arr[0]’
    
    
return EXIT_SUCCESS
 }



const 修饰指针

1、常量指针。指针指向的内容不可修改,指针可修改。
定义常量指针的方式有:
  • int const *p = 9;
  • const int *p = 9;
 #include <stdio.h>
 #include <stdlib.h>
 
 
int main(int argc, char *argv[])
 {
     int x = 10-;
     const int *p = &x;
     printf("*p=%d\n", *p);
  

     // 通过原来的变量修改指针指向的内容
     x = 11;   // 修改成功
    
printf("*p=%d\n", *p);

     // 修改指针
     int y = 13;
     p = &y;  
// 修改成功
     printf("*p=%d\n", *p);
    
     // 通过指针修改内容
     *p = 12;   // 编译报错 error: assignment of read-only location ‘*p’
    
printf("*p=%d\n", *p);
    
    
return EXIT_SUCCESS
 }


2、指针常量。指针指向的内容可修改,指针不可修改。
定义常量指针的方式有:
  • int *const p = 9;
  • int* const p = 9;
 #include <stdio.h>
 #include <stdlib.h>
 
 
int main(int argc, char *argv[])
 {
     int x = 10;
     int *
const p = &x;
     printf("*p=%d\n", *p);
    

     // 通过指针修改内容
     *p = 12;  
// 修改成功
    
printf("*p=%d\n", *p);

     // 修改指针
     int y = 13;
     p = &y;  
// 编译报错 error: assignment of read-only variable ‘p’
     printf("*p=%d\n", *p);
    
    
return EXIT_SUCCESS;
 }


3、常量指针+指针常量。指针与指针指向的内容都不可修改。
定义的方式有:
  • const int *const p = 9;
  • const int* const p = 9;
  • int const *const p = 9;
  • int const* const p = 9;

<正文结束> 

文章声明


作者:傲风(aofengblog@163.com)       编写时间:2012年08月25日

网址:http://aofengblog.blog.163.com

作者保留所有权利,转载请保留文章全部内容!


  评论这张
 
阅读(1256)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017