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;
这种方式只能看自己的,不能修改别人的,也不能改变自己。

只能看自己:

int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别,布布扣,bubuko.com

时间: 2024-10-24 14:46:18

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

天梯赛习题集 L2-011. 玩转二叉树

给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(<=30),是二叉树中结点的个数.第二行给出其中序遍历序列.第三行给出其前序遍历序列.数字间以空格分隔. 输出格式: 在一行中输出该树反转后的层序遍历的序列.数字间以1个空格分隔,行首尾不得有多余空格. 输入样例: 7 1 2 3 4 5 6 7 4 1 3 2 6 5 7 输出样例:

int *const &amp;&amp; int const * &amp;&amp; const int *的区别

ANSIC允许声明常量,常量和变量不同,常量就是不可以改变的量,用关键字const来修饰 比如:const int a int const a 以上两种声明方式是一样的,我们不需要考虑const和int的先后顺序,按照你理解的方便的一中方式进行应用. 因为const和int的顺序先后并不影响结果,因此 int const *   &&  const int *这两中情况就是一样的 所以我们只需要讨论两种情况 -----------------------------------------

【C++】int、const char*、char*、char、string之间的转换

#include "stdafx.h" #include<string> #include<vector> #include<iostream> #include<sstream> #include<stdio.h> #include<stdlib.h> using namespace std; //sstream string int2str1(int n){ ostringstream oss; oss <

const int *

5.Please choose the right statement about constusage: A.const int a;//const interger B.int const a;//const integer C.int const *a;//a pointer while point to const interger D.const int *a;//a const pointer which point to interger E.int const *a;//a co

the difference between const int *, int * const, int const *

Some people may be confused about the sequence of const and * on declaration in C++/C, me too. Now I think we can distinguish them by this way: 1.only noticing the position of const to *, and we can find that the following statements are same: const

int main (int argc, const char * argv[0]) 中参数的含义;指针数组和数组指针

恩,有的编译器初始化时候会产生这样的参数 argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名 1. 几种C++ 常见的参数种类 int main(void); int main(); int main(int argc, char **argv);   //等价于int main(int argc, char *argv[]),是否等价呢?是不是前一个可以表示任意长度的任意个数组,后一个只是定长的任意个数的数组?见下面 int main(int argc, c

const int * pi/int * const pi的区别

前面有一篇文章:数组名就是常量指针 参考文章:http://blog.pfan.cn/whyhappy/5164.html const int * pi .int const * pi与int *  const  pi及其操作 1 从const int i 说起    你知道我们申明一个变量时像这样int i :这个i是可能在它处重新变赋值的.如下:int i=0;//…i=20;//这里重新赋值了    不过有一天我的程序可能需要这样一个变量(暂且称它变量),在申明时就赋一个初始值.之后我的程

对于这个函数const int func(const int&amp; a) const声明中,三个const分别是什么意思?

第一个const 函数的返回值类型是const. 这个const修饰没什么意义,你可以想象一下: 既然是函数的 返回值,而且是值传递的形式,是否const有什么意义.如果指针(引用)传递,怎表示返回值的内容不可修改:一般用在赋值操作中,例: const A& operator =() { ... }第二个const修改函数的输入参数,这样可以提高效率.如:用实参b调用const int func(const int& b) const时,将跳过调用的过程(不复制函数),而直接运行它的内容.

C++中 int i 与 int &amp;i 注意事项

来源:http://blog.csdn.net/qianchenglenger/article/details/16949689 1.int i 传值,int & i 传引用 int i不会回带参数,而int &i可以回带参数,如 [cpp] view plain copy #include <iostream> void test1(int i) { i = 7; } void test2(int &i) //要限制参数改动,可以加const限制 { i = 7; }

LeetCode 8 String to Integer (string转int)

题目来源:https://leetcode.com/problems/string-to-integer-atoi/ Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible in