美高梅网投网站-美高梅手机网投-美高梅官方网站
做最好的网站

您的位置:美高梅网投网址 > 美高梅网站 > 就是指向常量的指针

就是指向常量的指针

发布时间:2019-09-28 01:25编辑:美高梅网站浏览(94)

      在C/C++的上学中,有人平常搞不清楚“常量指针”和“指针常量”那多少个概念。其实简单一点讲,“常量指针”所针对的地方上的多少是常量,而“指针常量”所针对的地方是常量,地址上面的多寡是足以变动的。

      首先,告诉大家贰个小准则,正是像这样连着的三个词,前边的二个不乏先例是修饰部分,中央词是后边一个词,怎么说呢,就如这里的常量指针和指针常量。

      常量指针,表述为“是常量的指针”,它首先应该是四个指南针。常量指针,正是指向常量的指针,关键字const出现在 * 左边,表示指针所针对的地址的故事情节是不行修改的,但指针本人可变。

      指针常量,表述为“是指针的常量”,它首先应该是一个常量。指针常量,指针自个儿是三个常量,关键字const出现在 * 左边,表示指针自个儿不可变,但其针对性的地方的剧情是能够被退换的。

      再分别细细表明,常量指针,它是二个指南针,什么样的指针呢?它是一个对准常量的指针,正是说我们定义了二个常量,举例 const int a=7; 那么大家就能够定义一个常量指针来指向它 const int *p=&a; 也得以分成两步,即 const int *p; p=&a; 那么它有如何功能呢?首先我们来讲说常量的天性,因为大家的指针是指向常量的,常量和变量的变量的不相同之处在于大家不能够对其内容开展操作,具体说正是修改,而我辈的指针是怎么样,它的内容本人是二个地方,设置常量指针指向三个常量,为的正是卫戍大家写程序进程中对指针误操作出现了改造常量那样的荒谬,应该纵然大家修改常量指针的所针对的空间的时候,编写翻译系统就可以唤起我们失误音讯。计算一下,常量指针正是指向常量的指针,指针所指向的地址的剧情是不足修改的。

      再来讲说指针常量,它首先是二个常量,再才是三个指南针。常量的性能是无法改改,指针的内容其实是二个地方,那么指针常量正是内容不可能改改的常量,即剧情不可能修改的指针,指针的原委是如何啊?指针的内容是地方,所以,聊到底,正是不能够修改那个指针所指向的地点,一开端最初化,指向何方,它就只能指向哪儿了,不能够指向任何的地点了,就像二个数组的数组名同样,是叁个原则性的指针,无法对它移动操作,比方您使用 p++; 系统就会唤起出错。不过它只是不可能修改它指向的地点,但以此针对的地方里的从头到尾的经过是能够轮换的,那和方面说的常量指针是一丝一毫两样的概念。作一下总括,指针常量就是是指针的常量,它是不可改变地址的指针,不过足以对它所针对的剧情开展修改。对了,忘了说说它怎么用,举个小例子 int a; int * const p=&a; 也能够分别写 int a; int * const p; p=&a;

      当然,你也得以定义个三个针对性常量的指针常量,就把上边的多个综合一下,表示如下
    const int a=7; const int * const p=&a;

    上面看多少个简易的例子,能够作证他俩的界别:
    第一个

    1voidmain(){
    2char*str1={"Hello"};
    3char*str2={"HelloWorld"};
    4char*constptr1=str1;
    5//指针常量--指针本人是常量,指向的地方不得以扭转,然则指向的地址所对应的剧情能够生成
    6
    7ptr1=str2;//错误因为那是七个指南针常量,改动指向的地点了
    8
    9printf("%sn",*ptr1);
    10}
    11
    12
    13//编写翻译错误errorC3892:'ptr1':youcannotassigntoavariablethatisconst
    14

    第二个

    1voidmain(){
    2char*str1={"Hello"};
    3char*str2={"HelloWorld"};
    4char*constptr1=str1;
    5//指针常量--指针本身是常量,指向的地址无法转移,但是指向的位置所对应的源委能够调换
    美高梅手机网投,美高梅网投网站,6
    7*美高梅官方网站,ptr1='A';//精确因为指向的地点的内容是足以转移的
    8
    9printf("%cn",*ptr1);
    10}
    11
    12//输出A
    13

    第三个

    1voidmain(){
    2char*str1={"Hello"};
    3char*str2={"HelloWorld"};
    4constchar*ptr1=str1;
    5//常量指针--指向字符串常量,所指向的字符串内容无法变,但是指向的地点能够更改
    6
    7ptr1=str2;//正确因为指向的地方是能够调换的
    8
    9printf("%sn",ptr1);
    10}
    11
    12//输出HelloWorld

    第四个

    1voidmain(){
    2char*str1={"Hello"};
    3char*str2={"HelloWorld"};
    4constchar*ptr1=str2;
    5//常量指针--指向字符串常量,所指向的字符串内容无法变,然则指向的地址可以转移
    6
    7ptr1='A';//错误因为指向的地址是内容是不能更换的
    8
    9printf("%cn",ptr1);
    10}
    11
    12
    13//编写翻译错误errorC2440:'=':cannotconvertfrom'char'to'constchar*'
    14

    信赖从上边多个大约的例证能够看出他们不雷同的地方把,在此地要请大家小心一下的地点是:

    指南针常量的评释:const 放在* 和指针名之间Type * constpointer ;

    常量指针的注解:const放在在 * 左边。

    本文由美高梅网投网址发布于美高梅网站,转载请注明出处:就是指向常量的指针

    关键词:

上一篇:没有了

下一篇:递归实现阶乘