1.指针的初始化 2.字符串指针 3 指针作为函数形参实参 3.1 正确实例代码 3.2 错误代码实例 计算机系统中有四个内存区域 1)栈:在栈里面储存一些我们定义的局部变量以及形参; 一种先进后出的存储结构,所有的自动变量(auto修饰的相当于局部变量),函数的参数,函数的返回值都是栈区变量。不需要用户申请释放,编译器自...
经典解决方法:容器中存储基类指针 Vehicle* parking_lot[1000];Automobile x;parking_lot[0] = &x; 不足: 内存管理的负担 若容器中的指针在其它地方被释放,会造成大量野指针 经典解决方法的改进:容器中的指针指向原对象的副本。 Vehicle* parking_lot[1000];Automobile x;parking_lot[0] =newAutomobile(x); ...
暴力解法可以通过但是耗时O(n^2),此算法仅耗时O(n),值得学习参考。 初始状态是两个指针位于首尾,此时容器的底最大。接下来执行的操作是i++或者j--,无论选择哪个,容器底都会减小,而容器的高度取决于短边,因此为了获取最大的容积,需要放弃短边,也就是说,短边的指针需要往内移动,保留了长边以获得更高边的机...
对于C语言来说,它具有以下容器: 学习C语言,很多初学者学完可能都会有的误区:认为char类型是用来存储字符的,short是用来存储短整数类型诸如此类的印象。如果这样认识变量,就太肤浅了,你就没学会C语言,变量的本质是容器,是用来组织数据的方式。char类型不是字符类型,而是字节类型(能够装1个字节数据的容...
1 指针的用法 指针即内存地址,简称地址。在说明指针及其用法的文字描述中,把“指针”换成“地址”,绝大多数情况下都不改变描述的本意,而且可能是对其含义的更准确理解。 内存是存储数据的“容器”,这种容器的计量单位是字节,地址则是以字节为单位的容器的编号,...
2.3 指针变量也占内存 指针本身也是一个变量,也有自己的地址,需要内存存储。 那是不是意味着,指针变量本身也有一个存储的地址。 我们直接来做个实验: 我增加了一条语句,用来打印指针变量 p 存储地址,通过&p 即可获得 p 的在内存中的存储地址。 输出结果显示指针变量 p 的存储地址是 0x4040A0。 我再增加一条...
一.string容器 1.string理解 string是C++中风格的字符串,在C语言中并没有string的内置数据类型,这是因为string的本质是一个类。 我们知道在C语言中我们使用char []来存储一个字符串,其实也就是char *来管理字符串,他的本质是一个指针。 C++中string是一个类,类内部封装了char *的成员属性,管理这个字符串,是...
拥有如此聪明的容器,许多程序员自己不再担心清理问题。他们认为容器会为他们操心。多数情况下,他们正确,但是当容器包括由new生产对象指针时,他们就不是太正确。毫无疑问,指针容器在销毁时,会销毁它所包容的每一个元素,但是指针的“析构函数”只是一个空操作。它不会调用delete。
在C语言中,关于内存管理的知识点比较多,如函数、变量、作用域、指针等,在探究C语言内存管理机制时,先简单复习下这几个基本概念: 1.变量:不解释。但需要搞清楚这几种变量类型: 全局变量(外部变量):出现在代码块{}之外的变量就是全局变量。 局部变量(自动变量):一般情况下,代码块{}内部定义的变量就是自动变量,...
一,智能指针 1.智能指针简介 智能指针是用法和行为类似于指针的类对象。 智能指针的底层对原始指针做了一定的封装。 智能指针除了像指针一样可以存储变量的地址,还提供了其他功能,比如可以管理动态内存分配,对引用进行计数等。 当智能指针所指向的变量离开了作用域或被重置时,智能指针会自动释放该变量所占用的堆内存...