C_const
const *
const在*左边,指向一个常量。
* const
const在*右边,指针是常量。
1 const int *p;//指向常量的指针,与下面一样
2 int const *p1;//指向常量的指针,与上面一样
1和2,适用于给予查询所有的权限,但是无修改权限。
如:超级管理员,查询所有账户的权限,但是无修改权限。
3 int * const p2;//常量指针
3,适用于给予只能对某个对象修改的权限。
如:客户对自己的账号进行存款、取款操作。
4 const int * const p3;//指向常量的常量指针,与下面一样
5 int const * const p4;//指向常量的常量指针,与上面一样
4和5,适用于给予只能对某个对象进行查询的权限,但是无修改权限。
如:客户对自己的账户进行查询操作。
#define _CRT_SURE_NO_WARNINGS #include <stdio.h>
#include <stdlib.h> //const int *p;//指向常量的指针,与下面一样
//
//int const *p1;//指向常量的指针,与上面一样
//
//int * const p2;//常量指针
//
//const int * const p3;//指向常量的常量指针,与下面一样
//
//int const * const p4;//指向常量的常量指针,与上面一样 main1()//指向常量的指针,与下面一样,适用于给予只读权限,无修改权限,如:只有查询权限
{
int num = ;
num = ; const int data = ;//const只有初始化的时候可以赋值
//data = 998; /*严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2166 左值指定 const 对象 hello F : \users\denggelin\documents\visual studio 2015\Projects\hello\hello\main.c 24*/ //const int data1;
//data1 = 998;
/*严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2166 左值指定 const 对象 hello F : \users\denggelin\documents\visual studio 2015\Projects\hello\hello\main.c 28*/ system("pause");
} main2()////指向常量的指针,与上面一样,适用于给予只读权限,无修改权限,如:只有查询权限
{
int num = ;
int const *p = #
//*p = 3;
} main3()//常量指针,适用于只对某对象进行修改,如:对自己的银行账户存款取款
{
int num = ;
int data = ; printf("%d\n", num); int * const p = #
//p = &data;
*p = ; printf("%d\n", num); system("pause");
} main()//指向常量的常量指针
{
int num = ;
int data = ; const int * const p = #
//p = &data;
//严重性 代码 说明 项目 文件 行 禁止显示状态
// 错误 C2166 左值指定 const 对象 hello F : \users\denggelin\documents\visual studio 2015\Projects\hello\hello\main.c 64 //*p = 998;
/*严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2166 左值指定 const 对象 hello F : \users\denggelin\documents\visual studio 2015\Projects\hello\hello\main.c 68*/
}
const变量,可以通过指针修改
const的本质是伪常量,无法用于数组初始化,以及全局变量初始化。
原因:const仅仅限定变量一旦初始化后无法再直接赋值。
const只是限定一个变量无法直接赋值,但是可以间接赋值。
但是还是有可能被意外修改,例如间接赋值,并不是完全只读,所以并非真正意义的常量。
例如局部const变量在栈区,而不在静态区(静态区会一直存在)。
也不在代码区,因为代码区会禁止修改,代码区间接赋值不可能成功。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>
#include <stdlib.h> main()
{
const int num = ; printf("%d\n", num); const int *p = #//指向常量的指针,定义一个指针指向一个常量,存储num的地址 int *pv = (int *)p;//对指向常量的指针进行强制转换 *pv = ;//对指针指向内容进行赋值 printf("%d\n", num);//间接的改变了一个常量 system("pause");
}
C_const的更多相关文章
- Autoconf 中文手册
Autoconf Autoconf Creating Automatic Configuration Scripts Edition 2.13, for Autoconf version 2.13 D ...
随机推荐
- QT:“下载速度柱状图”的模拟实现——思路真好,会动脑筋,连我都有了启发(这个思路好像是通用的)
不知是哪个版本的迅雷,有个“下载速度柱状图”的小界面,我比较喜欢(只不过最新版本的迅雷却没了),所以决定来山寨一个.当然,这个山寨品不能下载文件,呵呵. 思路:1:将界面的背景涂成黑色2:每隔0.1秒 ...
- Linux中Samba详细安装
为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互 ...
- vmware重装系统后虚拟机实例文件*.vmdk重用
如题:vmware重装系统后自定义的:虚拟机名称*.vmdk文件重用. 一.问题描述 系统磁盘坏道,装不上系统直接换了硬盘,但是新装的Vmware不能够通过open方式打开“自定义*.vmdk”(这个 ...
- UVA 562 Dividing coins(dp + 01背包)
Dividing coins It's commonly known that the Dutch have invented copper-wire. Two Dutch men were figh ...
- Linux学习笔记6-Linux根目录下各个目录的作用
/bin:存放最常用命令: /boot:启动Linux的核心文件: /dev:设备文件: /etc:存放各种配置文件: /home:用户主目录: /lib:系统最基本的动态链接共享库: /mnt:一 ...
- 【Android Training UI】创建自定义Views(Lesson 1 - 创建一个View类)
发布在我的网站 http://kesenhoo.github.io/blog/2013/06/30/android-training-ui-creating-custom-views-lesson-1 ...
- 【位运算DFS/DLX】【HDU1426】【数独】
题意:标准的一道数独题 DFS做法: 将横纵九宫格里的数字用位运算状态压缩,且可以通过逻辑或来确定总共有哪些数字被选择了,很方便也很快,代码如下 #include <cstdio> #in ...
- IE下全局对象报 脚本错误提示“对象不支持此属性或方法”解决方案
原来是IE会把页面中的元素id可以直接当变量名一样使用,但是这个id变量不能被赋值. 例如: <body id='body'> <script type="text/jav ...
- 关于常用meta的总结
入行也半年了,无数次的想过写博客也无数次的想过第一篇会写什么,一直没有落实.今天心血来潮把博客开了,那就写点东西吧.第一篇就写一写看似简单但又经常不注意到的meta标签吧.(博主经验尚浅,有许多理解不 ...
- jQuery基础---Ajax基础教程
jQuery基础---Ajax基础 内容提纲: 1.Ajax 概述 2.load()方法 3.$.get()和$.post() 4.$.getScript()和$.getJSON() 5.$.ajax ...