指针与引用
来源:互联网 发布:监听软件 编辑:程序博客网 时间:2024/06/08 04:23
今天看了《程序员面试宝典》,看到指针与引用一章,看到一些比较好的题目,记录下来,以便之后回想。
struct S{
int i;
int *p;
}
main()
{
S s;
int *p = &s.i;
p[0] = 4;
p[1] = 3;
s.p = p;
s.p[1] = 1;
s.p[0] = 2;
}
问你程序会在哪一行崩溃掉?
分析程序:(1)首先定义一个S的对象s
(2)定义一个int型指针指向对象s的成员i。
(3将4赋予指针指向的i
(4)将i后面的值即p赋予一个地址,即3
(5)对象s的成员p得到main内p的值,即对象s的成员i的地址,现在对象s的成员p指针存放了成员i的地址
(6)*s.p = s.p[0] =s.i,那么*(s.p+1) = s.p[1] = s.p; 的确有点绕,但是用语言概括,因为是s.p存放了s.i的地址,那么s.p[0]就是s.i的值。那么s.p[1]就是s.p存放的值,即它存放的s.i地址。所以s.p[1]和s.p是一样的,
(7)现在你把s.p[1]即s.p存放的地址改成1,那么s.p不再存放s.i的地址,那么s.p[0]本来指的是s.i,现在是一段未知的控空间,给未知的空间赋值,很明显会段错误
总的来说,这道题构思非常巧妙,关键两个等于:s.p[0] = s.i; s.p[1] = s.p = &s.i。
阅读全文
0 0
- 指针:指针与引用
- 指针与指针的引用
- 指针与指针的引用
- 指针与指针的引用-
- 指针与指针的引用
- 指针与二维指针、引用
- 指针与引用
- 指针与引用
- 关于引用与指针
- 指针与引用
- 引用与指针.C++
- 引用与指针
- 指针与引用
- const指针与引用
- Item1 指针与引用
- 指针与引用
- 指针与引用
- 指针与引用区别
- angular制作简易购物车
- XListView
- 深度学习及其在语音处理中的应用综述
- Gmapping从开始到放弃—写一个TF 广播
- RecyclerView 的添加分割线
- 指针与引用
- Linux操作系统 第二章Linux的安装 问答题
- JS中变量和函数的提升机制(hoisting)
- python3 .6 下 报错 RuntimeError: dictionary changed size during iteration
- Tablayout的基础使用
- bzoj 2529: [Poi2011]Sticks
- linux虚拟机安装svn服务器
- java线程池
- 10.15 算法基础