C++学习笔记之const

    xiaoxiao2021-11-22  60

    在c语言中,通过const修饰的变量(常量不能被直接修改),但是可以通过找到其地址,通过指针对其修改,因此可以认为c中的const是个假的。而在C++中,一旦经过const修饰的变量(常量),就不能被修改。 int main(void)//c程序 { const int num = 5; //num = 6;//num有const修饰,无法直接修改 int *p = &num *p = 6;//通过指针找到地址就能修改,所以在c中const是一个伪const printf("num = %d\n", num);//打印值为6,被修改了 system("pause"); return 0; }

    在c++中,可以使用const修饰的量来指定一个数组。

    #include<iostream> using namespace std; void main() { const int num = 5;//在c++中,const限定的就相当于一个常量 int array[num] = { 1, 2, 3, 4, 5 }; for (int i = 0; i < num; i++) { cout << array[i] << endl; } system("pause"); }

    在C++中,通过找到他的地址也不能对其进行修改

    void main() { const int num = 5; //int *p = &num//c++中的const限定的量不能用地址来引用,直接就报错了 int *p = (int *)&num//可以通过地址强转的方式来获取其地址 *p = 8;//,被const修饰的量,仍然是不能被修改 //但真实的内存已经被修改了,p地址里面的内容已经被改变。 //但是num对编译器来说直接从一个常量表中返回。始终不会被改变 cout << num << endl; system("pause"); } int const *p、const int *p、int *const p、const int *const p几者之间的差别

    void main() { int a = 10; const int b = 20; int const *p1;//p1指向的地址必须为一个const限定的常量 const int *p2 = &b; //p1,p2是等价的,指的是他们是指向常量的指针变量,指向的常量不能被赋值 //主要是const在*的左边还是右边 p1 = &b; int *const p3 = &a;//指向变量的常量指针,所指向的是一个变量,但是指向的地址不能被改变 const int *const p4 = &b;//一个指向常量的常指针 system("pause"); }

    const限定符与#define的区别

    #define没有具体的类型,被定义的常量在代码中出现时只是做一个强制替换,而const可以指定类型,在C++中,被const修饰的量都被放在一个常量表中(代码区),会在寄存器中产生,不能被修改,对其取地址取到的只是一个假地址,虽然地址中的值能被修改,但是不是修改的这个const值。

    转载请注明原文地址: https://ju.6miu.com/read-678460.html

    最新回复(0)