《程序员自我修养》观后验证第一弹。

一段非常好玩的代码(其实是经常犯的错):

struct TTest
{long long a;char b[10];
};void test_nullpoint()
{TTest *ptTest = NULL;if(ptTest->b){printf("%p\n", ptTest->b);printf("%p\n", &ptTest->a);}
}int main()
{printf("Hello World!\n");test_nullpoint();return 0;
}

输出结果:

./a.out

Hello World!
0x8
(nil)

有两个地方好玩:

1. if判断居然没起作用!!明明本意是判字符串为空的时候就不打印的!

2. 为什么是0x8???

3. 居然不core? 明明对空指针做“运算”

这两个问题在大神的文章中都有答案:http://coolshell.cn/articles/11377.html

文章作者还介绍了柔性数组的用法,日常不常用可以当做选读,但是这两个问题的答案必须知道:

1. 对于数组 char s[10]来说,数组名 s 和 &s 都是一样的。访问成员数组名其实得到的是数组的相对地址,而访问成员指针其实是相对地址里的内容

2.不管结构体的实例是什么——访问其成员其实就是加成员的偏移量

对象空指针中的成员的值是0x8是怎么回事?相关推荐

  1. js 加总数组中某一列_js根据对象数组中某一属性值,合并相同项,并对某一属性累加处理...

    js根据对象数组中某一属性值,合并相同项,并对某一属性累加处理 Example: 根据code合并数组,并将sl值累加,如下两种方法: let data = [{ code: 1001, name: ...

  2. 如何从JavaScript中的对象数组中获得不同的值?

    本文翻译自:How to get distinct values from an array of objects in JavaScript? Assuming I have the followi ...

  3. js对象数组中的某属性值 拼接成字符串

    var arr=[{id: "600", pId: null, name: "图形的变化"},{id: "630", pId: " ...

  4. JS对象数组中依据某个属性的值分组

    问题:需要在对象数组中根据某个属性值进行归类或者分组 const dataList = [{name: 'Apple',type: 'Fruit',price: '¥1.5'},{name: 'Ban ...

  5. java函数ao活动对象_JavaScript中的执行上下文和变量对象

    执行上下文(Execution Context) JavaScript代码执行的过程,包括编译和执行两个阶段,编译就是通过词法分析,构建抽象抽象语法树,并编译成机器识别的指令,在JavaScript代 ...

  6. ajax中异步属性,ajax中的async属性值之同步和异步及同步和异步区别

    jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里 ...

  7. 【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )

    文章目录 一.Groovy 构造函数中为成员赋值 二.Groovy 函数的参数传递与键值对参数 三.完整代码示例 一.Groovy 构造函数中为成员赋值 Groovy 类没有定义构造函数 , 但是可以 ...

  8. es6 对象中是否有键值_干货| ES6/ES7好玩实用的特性介绍

    本文介绍一些ES6/ES7好玩实用又简单的特性,或许对写代码的效率也有一定帮助噢. ES6/ES7的出现已经有一段时间了,里面的一些新特性你们是否了解呢?本骚年将结合自身的一些使用经历介绍一些简单实用 ...

  9. java后台传一个对象到前台_前台判断对象中的一个布尔值_springMVC面试题

    1:springMVC工作原理 springMVC架构.png [用户发送请求到前端控制器dispatcherservlet,前端控制器接收到请求之后调用处理器映射器,根据请求url找到具体的处理器, ...

最新文章

  1. layui ajax流加载,layui中流加载layui.flow
  2. ssh登录一段时间后断开的解决方案
  3. php实现父子评论,关于php:将一系列父子关系转换为层次树?
  4. 洛谷 - P4009 汽车加油行驶问题(分层图最短路/最小费用最大流)
  5. oracle缺失值表示,Oracle SQL,用最接近的非缺失填充缺失值
  6. python装饰器带参数函数_当我使用带参数的python装饰器时,如何将参数传递给最内部的函数?...
  7. linux shell su root失败
  8. amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown
  9. 《概率论与数理统计》(浙大第四版)第六章总结笔记(纯手写)
  10. steamcommunity302怎么用【使用方法】
  11. arm怎么运行python_给arm板编译移植python(一)
  12. 判断当前时间是否是法定节假日或工作日
  13. 一条sql语句查出男生前5名和女生前五名
  14. onload的具体使用
  15. 遥感在计算机领域的应用,浅谈遥感技术在测绘领域发展应用.doc
  16. Python中双冒号的作用
  17. 刘永富的Office开发资源-告别vba.mahoupao.net-移居博客园
  18. 【题解】士兵训练-C++
  19. Barcode读取之barcode_param_majority_voting.hdev
  20. Java 从键盘输入一个字符串,统计某个字符的个数

热门文章

  1. 哈希(crypto/bcrypt)
  2. 【Python绘图】朋友过生日不知道送什么?免费的蛋糕送给他
  3. css3动画炫酷旋转带你进入高端世界!!!
  4. 自定义ListView item的例子
  5. Java中sql语句中%s占位符使用
  6. 穷人想创业,应该如何找到正确的创业方向?
  7. 什么是服务器、工作站,它们有什么区别?
  8. 远程监控服务器图片,基于WEB服务器实现监控系统的视频图像显示
  9. 自动驾驶:使用 3D 时空卷积网络的自监督点云预测
  10. 为什么我们都要拼命赚钱