c++课程感想7

时间:2022-08-11 16:31:36

const:

const的设计就是为了干掉#define,主要有三个方面:

1.常数

#include <iostream.h>

#define pi 3.1415926

void main()
{
	int a = 5;
	int b = 3;
	cout << "a = " << a << endl;
	cout << &a << endl;
	cout << &b << endl;
// 	cout << &5 <<endl;	//5是常量,没有指针


//	cout << "pi = " << pi << endl;

//	const int c;

	const int c = 6;
// 	c = 6;
	cout << &c << endl;
	cout << "c = " << c << endl;
}

  在这个程序中,我们看结果,可以看出const也是在栈区,而且是和定义的变量是连在一起的,如果这时候写一句代码,5 = 3,编译是不能通过的,因为5是在代码区的,一般是不允许对代码区的数据赋值的。所以不能通过编译。但是即使是const在内存里面是不能改变的,我们也可以通过指针跳过编译器,然后改变const所指的值。

2.const指针的三个维度:

const 指针 1.指向常量的指针(*P是常量,P不是常量)  2.指针常量(P是常量,*P不是常量)  3.指向常量的指针常量(P是常量,*P是常量) 

#include <iostream.h>

void main()
{
	const int a = 5;
	const int b = 6;

	int c = 7;

//	int *pa = &a;		//不能将const int* 赋值给int*

	const int* p ;	//const 约束了指针所指向的对象的常量性,并未约束指针本身
//	*p = 10;			//error

//	p = &b;				//ok! 并未约束指针本身

//	p = &c;				//可以将int* 赋值给const int*
//	c = 15;
//	*p = 15;			//error, 虽然c可以被赋值,确不能向*p赋值(p指向c),
}

  在这里,是第一个维度,我们想象成一个扇形,就是发散的那个不能改

     第二种是可以摆动,

  第三种是都不行。

分别对应之前的那几个。

3.const 函数 表示里面不能带有赋值的语句,其实这种设计涉及到软件工程的思想。