目录
  • 练习一:一级指针指向练习题
  • 练习二:二级指针指向练习题
    • A选项;
    • B选项;
    • C选项;
    • D选项;
    • E选项;
  • 总结

    在C++中,const作用于指针时,可以看做是对指针权限的限制。这里我们先把指针的权限归为两种,分别为指向权限修改权限。(ps:以上是为了理解方便,实际并没有如此规定)

    	int a = 10, b = 20;
    	int* p = &a;
    	p = &b;		// 改变指向的权限  ✔
    	*p = 30;	// 修改内存的权限  ✔
    	const int* cp = &a;	// 限制修改权限
    	//*cp = 100;		// error:表达式必须是可修改的左值	修改 ✖
    	cp = &b;			// ok.								指向 ✔
    	int* const pa = &a;	// 限制指向权限
    	*pa = 100;			// ok.								修改 ✔
    	//pa = &b;			// error:表达式必须是可修改的左值  指向 ✖
    

    指针的赋值一般遵守权限缩小式的赋值。例如,我有一本书,我有使用权限(我可以看,可以做笔记),借给你后你只有阅读权限(只能看,不能做笔记)。当然,如果我们关系好,我可以赋予你使用权(你拥有读写的权利)。同样的,指针的赋值也是如此。

    	int a = 10;
    	int* p = &a;	// int*  <==  int *
    	int* q = p;				// int*  <== int*
    	const int* cp = p;		// const int*  <==  int*	权限缩小,✔
    	int* const pa = p;		// int*	 <== int*			注意:int* const pa;是“int*”类型
    	//int* p1 = cp;	// error:int*  <== const int *     权限放大,✖
    	int* p2 = pa;	// ok.    int*  <== int*
    

    我们可以得出一级指针赋值的公式

    int *       <==  int *		// int* 包含 int* 和 int* const类型
    int const * <==  int *		// int const * <=等同=> const int *
    // 以上公式反过来赋值就是错误的..
    

    练习一:一级指针指向练习题

    题目一:下列表达式语句赋值错误的是?

    	int a = 10;
    	const int* p = &a;
    	int* q = p;		
    	int a = 10;
    	int* const p = &a;
    	int* q = p;
    	int a = 10;
    	int* const p = &a;
    	int* const q = p;
    	int a = 10;
    	int* const p = &a;
    	const int* q = p;
    

    答案:(鼠标选中查看)

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。