访问权限问题(const)

来源:互联网 发布:python::-1 编辑:程序博客网 时间:2024/06/08 15:53
/*权限问题
int *p
int const *p
const int *p
int * const p
int const * const p
const int * const p
*/


//int *p 可读可写,可移动访问其他内存单元(最高权限)


//const int *p
//int const *p
//const int *p 等价于 int const *p, 限定只能读不可以写,地址可以移动


//int * const p 限定不可以访问其他内存单元,对指向的内存单元可读可写


//const int * const p 限定不可以访问其他内存单元,对指向的内存单元只能读不可写
//int const * const p
//const int * const p 等价于 int const * const p


#include <stdio.h>
#include <stdlib.h>


//const int *p限定写入权限
void main1()
{
int num = 10;
const int data = 20;//只有初始化的时候可以赋值,const限定你不能随便修改


const int *p = &data;//p是指向常量的指针
//*p = 3;//error,不能修改指向的常量
p = &num;//地址可以改变,可以不指向const,类型只存在一个解析方式问题


printf("%d\n", *p);//10


getchar();
}




//int const *p限定写入权限
void main2()
{
int num = 10;
int data = 20;
int const *p = &num;
p = &data;
//*p = 3;//error,不能修改指向的常量


printf("%d\n", *p);//20


getchar();
}






//int * const p 限定你吊死在一课树上
void main3()
{
int num = 10;
int data = 20;
int * const p = &num;//p为常量指针,不可修改
//p = &data;//error
*p = 15;

printf("%d\n", *p);//15
getchar();
}




//const int * const p 限定只能看,不可以修改,不可以看别的内存单元
void main()
{
int num = 10;
int data = 20;
const int * const p = &data;
//p = &num;
//*p = 3;
}
0 0
原创粉丝点击