精华内容
下载资源
问答
  • const intint const
    千次阅读
    2020-07-12 23:46:24

    The trick is to read the declaration backwards (right-to-left):

    const int a = 1; // read as "a is an integer which is constant"
    int const a = 1; // read as "a is a constant integer"
    Both are the same thing. Therefore:

    a = 2; // Can't do because a is constant
    The reading backwards trick especially comes in handy when you're dealing with more complex declarations such as:
    const char *s;      // read as "s is a pointer to a char that is constant"
    char c;
    char *const t = &c; // read as "t is a constant pointer to a char"
    *s = 'A'; // Can't do because the char is constant
    s++;      // Can do because the pointer isn't constant
    *t = 'A'; // Can do because the char isn't constant
    t++;      // Can't do because the pointer is constant

     

    int const * x;
    const int * x; 
    are same

    参考资料:

    https://gist.github.com/burczyk/8667937

    https://stackoverflow.com/questions/3247285/const-int-int-const

    更多相关内容
  • 文章目录int const* https://www.geeksforgeeks.org/difference-between-const-int-const-int-const-and-int-const/?ref=rp int const* int const* 是指向常量整数的指针。 这意味着被声明的变量是指向常量整数的...

    在这里插入图片描述

    int const*

        int const* 是指向常量整数的指针。
        这意味着被声明的变量是指向常量整数的指针。实际上,这意味着指针指向了不应更改的值。在这种情况下,const限定符不会影响指针,因此允许指针指向其他地址。
        第一个const关键字可以放在数据类型的任何一侧,因此int const *等价于同于const int *。

    #include <stdio.h>
    
    int main(){
    	const int q = 5;
    	int const* p = &q;
    
    	//Compilation error
    	*p = 7;
    
    	const int q2 = 7;
    
    	//Valid
    	p = &q2;
    	
    	return 0;
    }
    
    int *const

        int * const是指向整数的常量指针。
        这意味着要声明的变量是指向整数的常量指针。实际上,这意味着指针不应指向其他地址。在这种情况下,const限定符不会影响整数的值,因此允许更改存储在地址中的值。

    #include <stdio.h>
    
    int main(){
    	const int q = 5;
    	//Compilation error
    	int *const p = &q;
    
    	//Valid
    	*p = 7;
    
    	const int q2 = 7;
    
    	//Compilation error
    	p = &q2;
    
    	return 0;
    }
    
    const int* const

        const int * const是指向常量整数的常量指针。
        这意味着要声明的变量是指向常量整数的常量指针。实际上,这意味着常量指针指向常量值。因此,指针既不应指向新地址,也不应更改所指向的值。
        第一个const关键字可以位于数据类型的任一侧,因此const int*const等价于int const*const。

    #include <stdio.h>
    
    int main(){
    	const int q = 5;
    
    	//Valid
    	const int* const p = &q;
    
    	//Compilation error
    	*p = 7;
    	
    	const int q2 = 7;
    
    	//Compilation error
    	p = &q2;
    	
    	return 0;
    }
    
    记忆图

        记住语法的一种方法是螺旋规则-
        规则说,从变量名开始,顺时针移动到下一个指针或类型。重复,直到表达式结束。
    在这里插入图片描述
        该规则也可以看作是从右到左解码语法。
    在这里插入图片描述
        因此,

    • int const* 是指向 const int 的指针
    • int *const 是指向 int 的 const 指针
    • int const* const 是指向 const int 的 const 指针

        使用此规则,即使是复杂的声明也可以被解码,例如,

    • int ** const 是指向int的指针的const指针。
    #include        <stdio.h>
    
    int main()
    {
            int a = 5;
            int * p1 = &a;
            int ** const p2 = &p1;
    
            printf("*p1 = %d\n", *p1);
            printf("**p2 = %d\n", **p2);
    }
    
    • int * const * 是指向const指针的指针,其中const指针指向int。
    • int const ** 是指向指针的指针,里面的指针指向 const int。
    • int * const * const 是指向const指针的const指针,里面的const指针指向 int。
    参考文档

    [1]palaknarula.Difference between const int*, const int * const, and int const *[EB/OL].https://www.geeksforgeeks.org/difference-between-const-int-const-int-const-and-int-const/?ref=rp,2020-01-03.

    展开全文
  • const int&和const int本质区别

    千次阅读 2019-12-03 15:08:54
    很简单的来说,const int&是引用传值的方式,const int是值拷贝的方式 引用传值,简单的来说,就是把内存地址传过来,本身没有重新分配一块内存,而值拷贝的方式,则是重新从内存中分配一块出来保存该值,这样...
    • 很简单的来说,const int&是引用传值的方式,const int是值拷贝的方式
    • 引用传值,简单的来说,就是把内存地址传过来,本身没有重新分配一块内存,而值拷贝的方式,则是重新从内存中分配一块出来保存该值,这样内存消耗增加,而且花的时间更多。
    • 简单的代码示例
    int QuoteSwap(const int &a,const int &b)
    {
    	cout <<"引用传值" <<&a << endl;
    	cout <<"引用传值" << &b << endl;
        return 0;
    }
    
    int ValueSwap(const int a,const int b)
    {
    	cout <<"值拷贝" << &a << endl;
    	cout <<"值拷贝" <<&b << endl;
    	return 0;
    }
    
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	const int a = 2;
    	const int b = 3;
    	std::cout << &a << endl;
        std::cout << &b << endl;
    	QuoteSwap(a,b);
    	ValueSwap(a,b);
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    可以明显看出引用传值的地址 还是原先的 ,值拷贝则重新分配了一块内存。

    • 结论:
    • 能使用引用传值的情况下,尽量使用引用传值,减少内存的消耗,而且系统运行时间还能减少(当然,这运行时间差不了太多。)
    展开全文
  • const int *p 和 int *const p

    千次阅读 2022-01-21 20:15:32
    网上很多帖子以及很多相关书籍对指针的命名都很粗暴地从右往左读,本人初学时也的确被“吓”到了,尤其是const int *p指针常量,而int *const p常量指针。偶然看到了一篇文章对其有详细的解释。 const int *p:指向...

    网上很多帖子以及很多相关书籍对指针的命名都很粗暴地从右往左读,本人初学时也的确被“吓”到了,尤其是const int *p指针常量,而int *const p常量指针。偶然看到了一篇文章对其有详细的解释。
    const int *p:指向常量的指针。

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	//const int i = 123;
    	int i = 123;
    	const int *ptr = &i; // 指向一个具体类型的常量
    	cout << *ptr << endl;
    	
    	//*ptr = 321; // 不可通过ptr来修改i的值
    	cout << i << endl;
    	
    	cout << "-------------------" << endl;
    	
    	i = 321; // 若i本身被const限定,则不能修改
    	cout << *ptr << endl;
    	
    	return 0;
    }
    

    在这里插入图片描述

    int *const p:本身是常量的指针。p本身是const常量,不能修改p的内容,但是能通过p来修改它所指向的内容。有点绕是不是?
    这里重新说明一下指针p。p:指针指向的地址 *p:p所指向地址的内容。
    举个栗子,把指针p比作藏宝图:
    p本身是const常量,不能修改p的内容:藏宝图上面具体说明了宝藏藏在什么地方,这个位置不能修改对吧。
    通过p来修改它所指向的内容:但是你不知道宝藏究竟是什么对吧(谁能确保你用藏宝图挖出来的一定是高必而不是高神迹呢[doge])。盗墓贼把真的宝贝(高必)盗走了,把替代品(高神迹)放上去也是可以的吧。
    下面上代码:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	int i = 123;
    	int *const p = &i; 	// 指针(藏宝图)必须要初始化(有地址)
    	
    	cout << *p << endl;
    	cout << i << endl;
    
    	cout << "-----------------" << endl;
    	*p = 321; // 修改指针指向地址的内容
    	cout << *p << endl;
    	cout << i << endl;
    
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • const intconst int *、int *cosnt、const int * cosnt、const int &amp;amp;的区别
  • const int p 与 int const p 和const int const *p区别 一、何为const const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。也就是说const常量,具有不可变性。 例如: const int Max=100; ...
  • const int *p、int const *p、int * const p和const int * const p的学习1. const int *p、int const *p是一个东西代码运行如下:2.int * const p代码运行如下:3.const int * const p代码运行如下: 1. const int *...
  • 谈谈int*转const int* &的问题

    千次阅读 2019-07-24 20:02:34
    最近看代码遇到个指针的const引用的问题,指针总是很微妙。指针和引用的再深入,记录分享下。 int* const int* &等
  • 请问下面两句的实质区别,还有为什么作为数组维度会...const int a = 1; const int& a = 1; ``` const int a = 1; int b[a]; // 正确 const int &a = 1; int b[a]; // 错误:“表达式必须含有常量值” ```
  • int *constconst int *的区别

    千次阅读 2020-03-11 19:52:12
    概述 一个指针是有两个属性的,一个是它指向的地方,一个是它指向地方上的内容。两者的差别也在此。const究竟修饰的是什么。 代码 #include <... const int *m=&p; int const *n=&q...
  • 关于const int * ,int const * 以及 int * const 的区别

    万次阅读 多人点赞 2018-06-13 14:43:50
    指向常量的指针(const int * 和 int const *) 1. 两者的作用是一样的,都是一个指向常量的指针。 2. 可以不用先初始化,即指针没有指向任何内容。 3. 指针指向的内容是一个常量(即地址),可以通过...
  • 这里const 修饰的是int,而int定义的是一个整值 因此*a 所指向的对象 值 不能通过 *a 来修改,但是 可以重新给 a 来赋值,使其指向不同的对象 eg:  const int *a = 0;  const int b = 1;  int c =...
  • [C++] int* const p 和 const int* p 的区别

    千次阅读 2020-07-20 22:53:45
    int* const p 地址不能改 const int* p = int const *p *p不能修改 摘录一段百度解释,仅供参考: 其实很简单,const和*的优先级相同 且是从右相左读的,即“右左法则” 其实const只是限定某个地址存储的内容不...
  • 前言:很多人都把const int * 、int * constint const* 的区别和联系搞混,我自己在学习C++的过程中,也经常性 弄不 清楚,今天特意总结一下,作为学习笔记记录下来。 一,const修饰符用于指针  将const用于...
  • const int &x和int const &x和int &x和int x之间区别

    千次阅读 多人点赞 2019-04-29 16:16:09
    一:参数的常量引用const int &a和引用 int &a的区别 首先介绍一下为什么我们要使用引用形式进行参数传递。 我们写一个函数 void fun(int a,int b),这样的函数调用时是不会改变参数的值的, 在函数中也就是...
  • const int a =1 / int const a=1变量a的值不能改变const int *a=&amp;b指针变量a指向的值不能改变int * const a=&amp;b指针的指向不能改变int const *const a=&amp;b指针指向不能改变,指向的值也不能...
  • const int * a 与 int * const a 的定义与区别

    千次阅读 多人点赞 2018-04-30 11:22:19
    一:const int a; int const a ;这两个的作用是一样的,a都被定义成一个常整型数,一旦被定义后,就不能再其他地方重新赋值。二:const int * a;1:const修饰的是整型数 int,而不是指针,即a是一个指向常整型数的...
  • const int a; int const a; const int * a; int * const a; int const * const; 之间的区别const int a; int const a; 这两个写法是等同的,表示一个是一个INT常量。const int * a; 表示a是一个指针,可以任意指向...
  • 关于 const intint的区别

    千次阅读 2018-07-23 14:42:08
    const int a = 3; const 用来定义全局变量,类似于宏 ; 如果代码里用了100次 a(宏),那么就等于运用了100次 3。 如果在const 的定义下 运用了 100次 a ,那么在编译后的机器码里就不会出现100次3 ,而是出现100...
  • C++ static const int 成员变量

    千次阅读 2019-09-03 23:19:03
    1.static const int 成员变量 (测试代码) #include<iostream> using namespace std; class widget { friend void print_widget(); private: static const int a = 20; //测试static const int public: ...
  • const int *p,int const *p(指向常变量的指针变量,可以指向常变量,还可以指向未被声明为const的变量,但此时只能修改指向地址,不能修改值,可以修改指向的那个变量的值,不能用本身对指针变量地址修改的方式来...
  • 函数中const int& a与int& a的区别

    千次阅读 多人点赞 2019-05-08 08:41:19
    const 与&作用 const常类型作用:形参在子函数中调用时当成一个常量来使用,既无法成为左值,无法修改形参的值。 引用(&)作用:如a=&b,表示a是b的别名,此时a和b的地址相同。在子函数中调用时,形参...
  • const int *p1 和 int * const p2的区别:

    千次阅读 2019-08-29 17:53:45
    const int *p1=&a; //p1是可以指向常量的指针 int b; p1=&b; //正确,p1本身的值可以改变 *p=1; //编译时出错,不能通过p1改变所指的对象 使用指向常量的指针,可以确保指针所指向的常量不被意外更...
  • const int *& 的类型

    千次阅读 2018-07-18 13:38:20
    值不能改变是因为有constconst int* c,c解引用出来的值,不能被改变,因为被const修饰是常量。 指向不能改变是因为&amp;amp;amp;,&amp;amp;amp;会自动解引用,并且&amp;amp;amp;一经引用
  • C++ const int* p 和 int * const p的区别

    千次阅读 2017-08-30 09:16:49
    const int *p与int *const p的区别 标签: gccc 2012-09-29 15:13 11469人阅读 评论(6) 收藏 举报 分类: C语言编程(13) 作者同类文章X 版权声明:本文为博主...
  • const int *a和int *const a的区别

    千次阅读 2018-07-24 22:09:05
     1、int const *a 和 const int *a 的意义相同、作用等价;  2、 const int *const a  a所指向的对象及对象的值均不可改变;  3、const 对象的地址只能赋值给指向const 对象的指针;  4、指向...
  • 前言:很多人都把const int * 、int * constint const* 的区别和联系搞混,我自己在学习C++的过程中,也经常性 弄不 清楚,今天特意总结一下,作为学习笔记记录下来。 一,const修饰符用于指针  将const用于...
  • C语言中const int * 和 int * const

    千次阅读 2018-01-03 23:42:17
    const int a; int const a; 这两个写法是等同的,表示a是一个int常量。 const int *a; 表示a是一个指针,可以任意指向int常量或者int变量,它总是把它所指向的目标当作一个int常量。也可以写成int const* a;含义...
  • 1、const int *P 、int const *p这两个是一样的功能,以例子来进行说明  例1:#include  int main()  {  int a=5;  int b=8;  const int *p;  p=&a;
  • 关于指针,我们首先要弄清楚四点:指针类型、指针...当const修饰的是指针类型,那么指针的值就不能改变,即不能指向其他地址,但是可以通过指针修改其指向地址里面的值。 当const修饰时指针指向的类型时候,那么指针被

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,561,959
精华内容 1,024,783
关键字:

constint

友情链接: miaobiao.zip