- 博客(17)
- 收藏
- 关注
原创 C++内联函数/auto/范围for/nullptr
我们使用习惯性的使用auto来自动接收,当然也可以用数组元素类型来接收也行,只是auto更加方便,e只是变量名,意思是将数组里面的值依次赋值给e。编译器觉得没有必要生成指令,将地址放到符号表去,是直接展开的,也可以认为内联函数在符号表里没有地址。你会发现得出的结果和我们预期的不一样,这是优先级的问题,所以要加上括号。如图,我们是将数组里的值依次给了变量x,变量x的改变不会引起数组的变化。首先回顾一下,宏的本质是替换,这就意味着宏的结尾不能用分号。注意,这种是不行的,因为必须要数组名,这里的形参是指针。
2023-08-14 23:19:09 110
原创 C++ hello world 7.18
在之前count函数的那个空间上(销毁出栈,cout函数压栈),只是开大开小的问题,这样我们的cout函数就会覆盖掉之前n所在的空间,故此是随机值了。相当于你住酒店,退房前留下一个苹果,退房后再去访问这个房间,苹果还在不在是不确定的,在不同编译器下,有的空间释放就会置为随机值,有的不会,要看具体的环境,如上面的栈帧销毁后,就不会被置成随机值。如图,a是const修饰的,即在语法上不能被修改,而起别名b之后,并没有给b也加上限制,这a可以通过b进行修改,这是权限的放大,是不允许的。
2023-08-14 23:01:48 125
原创 【数据结构】队列
我们定义结构体,一想就是} Qnode;但为了方便我们的尾插和头删,我们要定义2个结构体指针指向尾和头也就是说,在初始化的时候,我们要定义这2个指针,并且每一次插入删除,都要手动使头尾指针改变尤其这样,我们不如再定义一个结构体} Qnode;int size;} Queue;我们要不要将2个结构体合二为一?不需要。我们的QNode是定义的结点的结构,即我们的整个链表Queue是定义的指向链表中头尾指针的结构我们的每一个结点需要有头尾指针和size吗?不需要!
2023-05-16 23:37:04 160 1
原创 【数据结构】栈
int top;int num;} st;我们在写较长代码的时候,我们为了方便可以将数据类型typedef一下,比如这里的int起别名叫DataType,当我们下次针对char类型的时候,一改即可。栈的实现需要一个指针,指向我们开辟的数组的起始位置。top表示栈顶位置,可以理解为开辟空间里面的有效个数。num表示现在空间的大小。
2023-05-16 23:34:20 1251
原创 【数据结构】真正的链表!带头双向循环链表!
int data;} sl;定义链表很简单,就是定义一个结构体,里面有prev指针和next指针,注意,为了方便我们将struct sl 起别名为sl。
2023-05-11 00:08:24 76
原创 五年笔试三年指针—详解指针题
老规矩,在开始前我们先复习一下指针相关的知识以及本文需要用到的是strlen与sizeof的知识我们看到这里就应该更加清楚的理解了,之前常见的2个例外之一,sizeof里面单独放数组名是计算的整个数组,切记是单独放哦a+0在sizeof里面,代表的就是首元素地址+0,不就是指针吗这里的&a是取出的整个数组的地址,但是它仍然是地址,内存大小也逃不脱4/8在这里a的本质是首元素地址,地址就是指针,指针就是地址,那么我在再来解引用是不是等于访问的是a【0】?再思考一下下面代码能不能过关ok这里我
2023-05-02 23:35:29 73
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人