int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别



  1. 加有const关键字的几种情况的辨析

const修饰的代码

含义(特点)

等价性

int *p = #

1.      
可以读自己

2.      
可以通过*p改自己

3.      
可以通过p = &data来看别人

权限最大

cons int *p = #

1、const放在左边意味着指向的是常量,这个常量不可以修改,

2、p = &data; (地址可以修改)

3、*p = 30;(这个时候是错误的)

这两者等价(应用:查看别人的账户)

int const *p = #

(和上面的等价)限定只能读不可以修改,地址可以移动

int * const p = #

不可以修改自己的地址,但是可以通过*p来修改自己的值

 

const int * const p = #

不可以修改地址来看其它的值,也不可以修改自己的,只能看自己的

1、可看自己

2、不改自己

3、不能看别人

int const * const p = #

限定只能看自己的账户,只能读不可写

 

  1. 只能在初始化的时候才能够赋值(const限定了不能随便修改变量)
  2. const总结

const在’*’左边意味着我指向的是常量。

const在’*’右边意味着我指针式一个常量。

当把上面的p=&data;改成了*p
= 3;这个时候就不可以了。截图如下:

 

  1. int const *p

  1. int * const p; 不可以修改自己的地址,但是可以通过*p来修改自己的值

可以通过*p的方式进行修改

6.const int * const p = &data;
这种方式只能看自己的,不能修改别人的,也不能改变自己。

只能看自己:

时间: 2024-09-16 04:53:33

int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别的相关文章

int.prase(" 1" ) 值应该1而我Net2005中的int.prase(" 1 ")的值为 0x00000001 要怎样设置使nt.prase(" 1" ) 为1

问题描述 int.prase("1")值应该1而我Net2005中的int.prase("1")的值为0x00000001要怎样设置使nt.prase("1")为1 解决方案 解决方案二:int.prase("1",System.Globalization.NumberStyles.Integer)转换为int类型的数字解决方案三:0x00000001难道不是1?Displaystyle只对"人"有意义..

c#调用c++dll时const int*类型参数应该怎么对应

问题描述 如题,C++里原型为:intpSimDataWrite(intmodelID,intopt,intnID,constchar*szData,constintnDataLen);intpSimDataTake(intmodelID,intopt,intnID,char*szData,unsignedintnDataLen,constunsignedintnDataSliceNumberMax,unsignedint*nDataSliceNumber);两个函数的参数里都有const,查了

c++-const int a=10; int *p =(int *)(&a);

问题描述 const int a=10; int *p =(int *)(&a); #include using namespace std ; int main () { const int a=10; int *p =(int *)(&a);//运行正常 为什么 int *p = &a 报错 cannot convert from 'const int *' to 'int *' 解决方案 因为是const int *,传给int *必须类型转换.之所以有这样的规定是为了防止程

caffe: compile error : undefined reference to `cv::imread(cv::String const&, int)' et al.

when I compile caffe file : .build_debug/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)'.build_debug/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<u

QColor与Int类型相互转换

下面介绍怎么将QColor与int进行相互转换 1.在头文件中添加以下代码: #include <QColor> int QColorToInt(const QColor &color); QColor IntToQColor(const int &intColor); 2.在主体CPP文件中添加以下转换函数: int BenQWord::QColorToInt(const QColor &color) { //将Color 从QColor 转换成 int return

小议主子表INT自增主键插入记录的方法

插入    主子表最常见的大概就是用在进销存.MRP.ERP里面,比如一张销售订单,订单Order(ID,OrderDate),订单明细OrderDetail(OrderID, ProductID, Num,Price)这个大概就是最简单的主子表了,两个表通过ID与OrderID建立关联,这里主键ID是自增的INT类型,OrderID是表OrderDetail的外键.当然,键的选择方法很多,现在我们选择的是在sql里面最简单的方法.    对于这样的表结构,我们最常见的问题就是保存的时候怎样处理

C++ int与string的转化

int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释.缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释.8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X. string前后加上双引号,告诉编译器把它当成一串字符来解释. 注意:对于字符,需要区分字符和字符表示的数值.比如:char a = 8:char b = '8',a表示第8个字符,b表示字符8,是第56个字符.  int转化为

关于c语言的int main()的问题

问题描述 关于c语言的int main()的问题 在int main()中有int,程序最后就要加return 0:书上说函数类型可以省略,此时函数的默认数据类型为int型,但为何在只写main()这样的程序时,后面就可以不加return 0?同时还想问一下return和exit直接有什么区别呢? 解决方案 问题一回答:楼主可以搜索下,在任何C语言中从来没有哪一种标准是鼓励没有返回值的函数的,也就是void main(),甚至一些国外程序大神是严厉抨击这种void返回类型. 所以在gcc 编译下

一个简单的int型C++单链表的实现

IntSLList.h //************************ intSLList.h ************************** // singly-linked list class to store integers #ifndef INT_LINKED_LIST #define INT_LINKED_LIST class IntSLLNode { public: IntSLLNode() { next = 0; } IntSLLNode(int el, IntSL

c++的问题-c++中int是一个类么,c++中int是一个类么,取大神,取大神

问题描述 c++中int是一个类么,c++中int是一个类么,取大神,取大神 c++中int是一个类么,取大神,取大神,c++中int是一个类么,取大神,取大神,c++中int是一个类么,取大神,取大神 解决方案 int是基本类型,不是类.C++也不是完全面向对象的语言. 解决方案二: 不是-------- 解决方案三: 不是的哦,只是基本类型而已 解决方案四: int不是一个类.int是一种数据类型.数据类型就是固定内存大小的别名.int占四个字节.所以你定义一个int型变量,他占四个字节.