我的C++学习之路

来源:互联网 发布:地下室顶板 塑性板算法 编辑:程序博客网 时间:2024/04/29 16:34

备忘C++知识点(牛客网刷题知识点备忘)


1、char *p[10] 是指针数组,数组里存放了10个指针,在64位系统下指针占8个字节,所以sizeof(p) = 10 * 8 = 80.
char (*p1)[10]是数组指针,p1是一个指向存放10个char类型的数组的指针,所以sizeof(p1) = 8.

2、引用 NWU 面试容易考的关于const的几个易混淆的表达式做一个整理,希望对大家有帮助
int const *a 和 const int *a 意义相同,作用等价 同理,本题3、4意义相同
const int *a  这里const 修饰的是int,而int定义的是一个整值
int *const a   这里const修饰的是 a ,a代表的是一个指针地址  因此不能赋给a其他的地址值,但可以修改a指向的值
const int * const a  这个代表a所指向的对象的值以及它的地址本身都不能被改变




const修饰指针的情况,见下式:

int b = 500; 
const int* a = &b                  [1] 
int const *a = &b                  [2] 
int* const a = & b                 [3] 
const int* const a = & b         [4]

如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。const和左侧相关,除非左侧没东西。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a = 3;[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常量





0 0
原创粉丝点击