const基本用法

1、const int a=1;  //此时a为常量,其值不能改变,而且在定义的同时必须初始化

错误的程序:

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

int main()
{
    const int a;
    a=1;

}

a在定义的同时没有初始化,同时后面又尝试修改a的值。

正确的代码:

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

int main()
{
    const int a=1;
}

2、const int *p;    //p指向的内容不可变,但是可以使该指针指向其他的int型变量

错误的代码:

int main()
{
    int val=1;
    const int *p=&val;
    *p=3;
}

此时,尝试通过指针修改其指向的内容,报错:error: assignment of read-only location ‘* p‘

正确的代码:

int main()
{
    int val=1;
    const int *p=&val;
    val=3;

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

虽然不能通过指针修改其指向的内容,但是可以通过原变量的名直接修改其指向的内容。

正确代码2:

int main()
{
    int val=1;
    int k=3;
    const int * p=&val;
    p=&k;

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

虽然不能通过指针改变其指向对象的值,但是可以修改该指针的指向,且指针p在定义的同时,不一定要同时初始化。

3、int * const p=&val;    //此时p只能指向变量val,不能指向其他变量

错误的代码:

int main()
{
    int val=1;
    int k=3;
    int * const p=&val;
    p=&k;

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

此时会报错:error: assignment of read-only variable ‘p‘

正确代码2:

int main()
{
    int val=1;
    int * const p=&val;
    *p=3;

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

虽然不能改变指针的指向,但是可以通过指针改变其指向的对象的值。

4、const int * const p=&val;    //指针p的指向不能被改变,同时其指向的内容的值也不能通过该指针改变

错误的代码:

int main()
{
    int val=1;
    int k=3;
    const int * const p=&val;

    p=&k;

    *p=3;

}

此时,会有两个错误:

1)error: assignment of read-only variable ‘p‘,说明p的指向时不能改变的;

2)error: assignment of read-only location ‘*(const int*)p‘,说明p指向的对象(val),不能通过指针修改其值。

但是:

int main()
{
    int val=1;
    const int * const p=&val;
    val=3;
}

我们仍然可以通过变量名来修改其值,也就是说我们所说的“指向的对象的值不能改变”是说不能通过指针的方式修改。

时间: 2024-11-06 03:49:00

const基本用法的相关文章

C/C++中const的用法

const是C语言的关键字,经C++进行扩充,变得功能强大,用法复杂.const用于定义一个常变量(只读变量),当const与指针,引用,函数等结合起来使用时,情况会变得复杂的多.下面将从五个方面总结const的用法. 1.const位置 const位置较为灵活,一般来说,除了修饰一个类的成员函数外,const不会出现先一条语句的最后.示例如下: #include <iostream> using namespace std; int main(int argc,char* argv[]) {

C++笔记16之const的用法总结

const主要是为了程序的健壮型,减少程序出错. 最基本的用法: [cpp] view plaincopy const int a=100; b的内容不变,b只能是100也就是声明一个int类型的常量(#define b =100) int const b=100; //和上面作用一样 const指针和引用一般用在函数的参数中 [cpp] view plaincopy int* m = &a; //出错,常量只能用常指针 int c= 1;const int*pc = &c;//常指针可指

C++const关键字用法

const关键字是C++新引进的关键字,目标是用于定义常量,避免C语言中使用宏定义出现的边际问题,并且const是类型安全的,即const定义的是不可修改值的变量,它是有类型的,但是宏替换只是简单的进行字符串的替换,容易出现边际问题,造成错误.但是const的用法并不仅仅在此,因此整理一下,加深理解 C++const关键字用法

C++类中const一些用法

在类中的const基本有三种用法 const int func(); // 返回值是const类型 int func(const int); // 参数为const类型 int func(int )const; // 为const类型的成员函数,只能调用类中const类型的变量: 另外,当类的实例是const类型时,也只能调用类中的const成员函数,且只有类的成员函数才能被修饰为const类型: //Point.h #include <iostream> using namespace st

C++中的const的用法

const对象.指向const对象的指针.const指针(通过一个面试题来了解)   1.const对象 (1)关于const,很多企业的笔试.面试都会出现,很简单,就问你“const的含义?”. 我不清楚大家的回答,我的第一反应是常量,然后我想到了C#中关于const的解释(static and read-Only),于是我想到了只读,我只想到这么多. 看一下答案吧: 答:我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道.去年Dan Saks已经在他的文章里完

C++中const关键字用法

为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量:  const 类型说明符 变量名 常引用:  const 类型说明符 &引用名 常对象:  类名 const 对象名 常成员函数:  类名::fun(形参) const 常数组:  类型说明符 const 数组名[大小] 常指针:  const 类型说明符* 指针名 ,类型

const 常见用法

 const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量 下面我就介绍一下几种常见的用法 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int Val = 10; //Val = 20; //错误,不可被修改 2. 保护传参时参数不被修改,如果使用引用传递参数或按地址传递参数给一个函数,在这个函数里这个参数的值若被修改, 则函数外部传进来的变量的值也发生改变,若想保护传进来的变量不被修改,可以使用const保护 void  fun1(const in

C++类中const的用法

C++ 类中的const用法总结: 先看一个例子: class A { public: A(int x) : num(x), b(x) {} void fun(const A& a); //const修饰函数形参 int GetNum(void) const;//const修饰不修改成员变量的函数 void SetNum(int x); A& operator=(const A& other);  //const修改成员函数的返回值和形式参数 const A operator*(c

【转】const的用法,特别是用在函数前面与后面的区别!

在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针.可以改变this所指向的值,但不能改变 this所保存的地址. 在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针.既不能改变 this所指向的对象,也不能改变 this所保存的地址.   关键字:Const,Const函数,Const变量,函数后面的Const 看到const关键字,C++程序员首先想到的可能是const常量.这可不是良好的条件反射.如果只知道用const

C++ _ const的用法,特别是用在函数前面与后面的区别!

在普通的非 const成员函数中 this的类型是一个指向类类型的 const指针.可以改变this所指向的值,但不能改变 this所保存的地址. 在 const成员函数中 this的类型是一个指向 const类类型对象的 const指针.既不能改变 this所指向的对象,也不能改变 this所保存的地址. 关键字:Const,Const函数,Const变量,函数后面的Const 看到const关键字,C++程序员首先想到的可能是const常量.这可不是良好的条件反射.如果只知道用const定义