对象空指针中的成员的值是0x8是怎么回事?
《程序员自我修养》观后验证第一弹。
一段非常好玩的代码(其实是经常犯的错):
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是怎么回事?相关推荐
- js 加总数组中某一列_js根据对象数组中某一属性值,合并相同项,并对某一属性累加处理...
js根据对象数组中某一属性值,合并相同项,并对某一属性累加处理 Example: 根据code合并数组,并将sl值累加,如下两种方法: let data = [{ code: 1001, name: ...
- 如何从JavaScript中的对象数组中获得不同的值?
本文翻译自:How to get distinct values from an array of objects in JavaScript? Assuming I have the followi ...
- js对象数组中的某属性值 拼接成字符串
var arr=[{id: "600", pId: null, name: "图形的变化"},{id: "630", pId: " ...
- JS对象数组中依据某个属性的值分组
问题:需要在对象数组中根据某个属性值进行归类或者分组 const dataList = [{name: 'Apple',type: 'Fruit',price: '¥1.5'},{name: 'Ban ...
- java函数ao活动对象_JavaScript中的执行上下文和变量对象
执行上下文(Execution Context) JavaScript代码执行的过程,包括编译和执行两个阶段,编译就是通过词法分析,构建抽象抽象语法树,并编译成机器识别的指令,在JavaScript代 ...
- ajax中异步属性,ajax中的async属性值之同步和异步及同步和异步区别
jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里 ...
- 【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
文章目录 一.Groovy 构造函数中为成员赋值 二.Groovy 函数的参数传递与键值对参数 三.完整代码示例 一.Groovy 构造函数中为成员赋值 Groovy 类没有定义构造函数 , 但是可以 ...
- es6 对象中是否有键值_干货| ES6/ES7好玩实用的特性介绍
本文介绍一些ES6/ES7好玩实用又简单的特性,或许对写代码的效率也有一定帮助噢. ES6/ES7的出现已经有一段时间了,里面的一些新特性你们是否了解呢?本骚年将结合自身的一些使用经历介绍一些简单实用 ...
- java后台传一个对象到前台_前台判断对象中的一个布尔值_springMVC面试题
1:springMVC工作原理 springMVC架构.png [用户发送请求到前端控制器dispatcherservlet,前端控制器接收到请求之后调用处理器映射器,根据请求url找到具体的处理器, ...
最新文章
- layui ajax流加载,layui中流加载layui.flow
- ssh登录一段时间后断开的解决方案
- php实现父子评论,关于php:将一系列父子关系转换为层次树?
- 洛谷 - P4009 汽车加油行驶问题(分层图最短路/最小费用最大流)
- oracle缺失值表示,Oracle SQL,用最接近的非缺失填充缺失值
- python装饰器带参数函数_当我使用带参数的python装饰器时,如何将参数传递给最内部的函数?...
- linux shell su root失败
- amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown
- 《概率论与数理统计》(浙大第四版)第六章总结笔记(纯手写)
- steamcommunity302怎么用【使用方法】
- arm怎么运行python_给arm板编译移植python(一)
- 判断当前时间是否是法定节假日或工作日
- 一条sql语句查出男生前5名和女生前五名
- onload的具体使用
- 遥感在计算机领域的应用,浅谈遥感技术在测绘领域发展应用.doc
- Python中双冒号的作用
- 刘永富的Office开发资源-告别vba.mahoupao.net-移居博客园
- 【题解】士兵训练-C++
- Barcode读取之barcode_param_majority_voting.hdev
- Java 从键盘输入一个字符串,统计某个字符的个数