程序员面试宝典第七章总结——指针与引用
来源:互联网 发布:淘宝开店类目 知乎 编辑:程序博客网 时间:2024/05/29 04:45
7.1
面试题1:
引用不能为空,必须总是指向某些对象。所以必须初始化。
面试题2:略。
7.2
面试题1:略。
面试题2:
编译器总是要为函数的每个参数制作临时副本。运行后,副本自动删除。
题目中,GetMemory(),先为str生成一个副本p,这个副本p先指向str所指向的位置, 当malloc一个区间给p后, p指向malloc的区间,但是函数结束后, 回收p,此时,没有将区间返回给str,因此会造成内存泄漏。
面试题3:
返回的结果是不确定且不安全,随时有被回收的可能。
面试题4:略。
面试题5:
本题考察的是对内存偏移的理解。B* pb=(B*)(&a);是将a强制转化成B类型,并将a的地址赋值给pb;也就是说pb指向的是类型为A的一篇内存空间。 因为B只有一个元素int m_c,编译器对m_c的认识就是m_c是对象的偏移量0。同时,A中的第一个m_a的偏移量也为0; 当调用pb->fun()时,调用的是B类型的fun()函数,函数输出m_c的值,由于编译器认为对象偏移量为0的就是m_c,所以这个时候输出的是m_a。
如果把两个类型颠倒过来,A变B,B变A,则输出的是3和一个任意数。
再若把题目改成如下:
class A{public:A(){m_a=1;m_b=2;}~A(){};void fun(){printf("%d%d",m_a,m_b);}private:int m_a;int m_b;};class B{public:B(){m_c=3;m_d=4;}~B(){};void fun(){printf("%d\n",m_c);}void fun1(){printf("%d\n",m_d);}private:int m_c;int m_d;};int main(int argc, char* argv[]){A a;B* pb=(B*)(&a);pb->fun1();return 0;}
则此时结果为2。
面试题6:
不能给一个指针分配一个随意的地址。
面试题7:略。
面试题8:
主函数main中可以不谢return语句,因为编译器会隐式返回0。但是在一般函数中没return语句是不行的。
面试题9:
当语句运行到s.p[1]=1时,这个时候s.p的指针就变成了指向地址空间为0x00000001的指针,这个时候再运行s.p[0]=2,则由于对于一个未做声明的地址直接访问,而访问出错。
7.3
面试题1:略。
面试题2:
函数指针的声明:
void (*f)();
int max(int, int);int (*p)(int,int)=&max;orint max(int,int);int (*p)();p=max;
7.4
面试题1:略。
面试题2:略。
面试题3:略。
面试题4:
两个区分开来
A代码区: 输出2 5
int main(int argc, char* argv[]){int a[]={1,2,3,4,5};int* ptr=(int*)(&a+1);printf("%d %d",*(a+1),*(ptr-1));return 0;}B代码区:输出2 1
int main(int argc, char* argv[]){int a[]={1,2,3,4,5};int* ptr=(a+1);printf("%d %d",*(a+1),*(ptr-1));return 0;}
7.5
面试题1:
迷途指针,悬浮指针,失控指针,野指针。即当对一个指针进行delete操作后,虽然释放了它所指向的内存,但并没有把它设置为空。这个指针仍然指向原来的内存区域,但是编译器已经把这块内存区域分配给了其他的数据。再次使用这个指针会导致程序崩溃。
面试题2:略。
面试题3:略。
面试题4:略。
7.6
面试题1:略。
面试题2:
智能指针:auto_ptr是安全指针,在指针析构的时候,自动删除此指针。
7.7
面试题1:
1 this指针本质是一个函数参数,只不过隐藏起来了。针对的是一个类的实例。因此,this指针只能在成员函数中使用。全局函数、静态函数都不能使用this。
2 this在成员函数开始前构造,在成员的结束后清除
3 this指针不占用对象的空间,他只会占用参数传递时的栈空间,或者直接占用一个寄存器。
4 this是指向对象的常指针
具体看书!! 没法总结。
- 程序员面试宝典第七章总结——指针与引用
- 程序员面试宝典(第四版)——读书笔记-3、第七章:指针与引用
- 程序员面试宝典 7 - 指针与引用
- 求职宝典 第七章 指针与引用
- 程序员面试宝典第六章总结——预处理、const与sizeof
- 程序员面试(c++)——指针与引用
- 程序员面试宝典笔记2--指针和引用
- 程序员面试宝典随笔记(一)----引用和指针
- 第七章 指针与引用
- 程序员面试宝典总结
- 程序员面试宝典-第七章-类的隐藏、覆盖
- 《程序员面试宝典》-指针参数
- 《程序员面试宝典》指针问题
- 20.c/c++程序员面试宝典-引用与值传递
- 程序员面试宝典第九章总结
- C++程序员面试宝典——预处理、counst与sizeof
- 程序员面试宝典知识总结
- 程序员面试宝典总结1
- String... args简介
- C#去掉数组中重复的字符串
- Leetcode_spiral-matrix
- replace vs substitute
- C语言实现控制台背景闪烁
- 程序员面试宝典第七章总结——指针与引用
- 第五周作业的抄写部分
- jqgrid加载数据
- SpringMVC和Struts2比较
- Java 时间转换
- OC简单知识的练习
- java 文件 大小格式化输出
- 关于mysql 索引的文章
- Ali实习生笔试总结