文章列表
// 取消标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 禁止屏幕休眠
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// 全屏幕
...
typeof的运算数未定义,返回的就是 "undefined".
运算数为数字 typeof(x) = "number"
字符串 typeof(x) = "string"
布尔值 typeof(x) = "boolean"
对象,数组和null typeof(x) = "object"
函数 typeof(x) = "function"
typeof 运算符返回一个用来表示表达式的数据类型的字符串。
可能的字符 ...
在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。
什么是webkit
WebKit
是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS
X ...
昨天下午到现在一直在搞通过poi将数据保存在sdcard中,但是真机调试时一直不能够在机子上查看保存的文件(sdcard被占用),通过网上查询及自己实践总结如下:
1、设置——》应用程序——》开发——》选择USB调试
2、选择任务栏中的USB链接——》选择仅供电
问题的根结是原来的选择是内存卡存取,这种设置能够在pc上看到这个盘并可以操作其中的文件
仅供电模式在调试时不但能够在机子上继续查看sdcard文件和可以通过eclipse的File explorer查看文件
不用在意剩余内存的大小,其实很多人都是把使用其他系统的习惯带过来来了。Android
大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道Java
,
就能更清楚这机制了。其实和java的垃圾 ...
对于Android流量统计来说在2.2版中加入了TrafficStats类可以轻松获取,其实本身TrafficStats类也是读取
Linux提供的文件对象系统类型的文本进行解析。android.net.TrafficStats类中,提供了多种静态方法,可以直接调用获取,返回
类型均为long型,如果返回等于-1代表 UNSUPPORTED 当前设备不支持统计。
static long getMobileRxBytes() //获取通过Mobile连接收到的字节总数,这里Android123提示大家不包含WiFi
static long getMobileRxPa ...
在这篇后记中,笔者将对三个问题进行补充:
一、关于数组名取地址的问题。c89、c99允许对数组名取地址,是由于数组符合一个对象的定义,按照一
个对象的语义,对其取地址是合理的。但矛盾在于,数组名是一个符号地址,是一个右值,对其取地址不
符合&运算符的语法。c89、c99委员会经过权衡,认为维护一个对象的合理性比一个运算符更重要、更合
理,因此允许对数组名取地址。但是,&a的意义,已经不是对一个数组名取地址,而是对一个数组对象取
地址,因此,&a所代表的地址值才跟a地 ...
指针是C语言规范里面一项核心内容,指针具有与生俱来的优势,利用指针可以写出许多短小精悍、效率极高的代码,它是C语言一把无可替代的利器,凭着这把利器,C语言与其它高级语言相比至少在效率方面高人一筹。但是 ...
第十章 围绕p()与(*p)()的争论
- 博客分类:
- C语言
对于一个函数:
void func(void);
我们通常可以定义一个这样的函数指针指向它:
void (*p)(void) = func;
通过p调用func时,通常有两种写法:
p();或者(*p)();
围绕这两种写法,当初C89制定的时候曾经有过争论。(*p)();是一种旧式的规定,旧式规定圆括号左边必须具有“函数”类型,如果是指向函数的指针,那么必须加上*声明符。但C89不再把圆括号的左边限定为“函数”类型,而是一个后缀表达式。那么问题就来了,如果p的值是函数地址,那么*号就是声明符,但如果p指向的内容是函数地址,*号就得被看作运算符了。 ...
const一词是英文constant的缩写,设立这个关键字的本意,是希望让它所修饰的对象成为一个常量。记得在国家间的外交中,有一个经常用到的术语:“从事与身份不符的活动”,这个const恰恰也正从事着这样的活动,呵呵。C语 ...
上一章费那么多唇舌讨论C语言的声明,其实目的都是为了这一章,期望读者通过对C语言声明形式的详细了解,树立声明嵌套的观念,因为C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的:
The right-left rule: Start reading the declaration from the innermost ...
人们常说,C语言的声明太复杂了,的确,这也是C语言饱受批评的地方之一。不过,笔者认为,真正要受到批评的不是语言本身,而是那些传播者。传播者们通常都有一个共识:讲述要由浅入深。作为原则,笔者并非要反对它 ...
动态数组与字符串常量可算是两种“另类”数组。
VLA可变长数组并不为C89所支持,C99才开始支持VLA。但如果想在只支持C89的编译环境中使用VLA的话,怎么办呢?我们可以用动态数组来“模拟”,动态数组在矩阵的运算中很常见,常用来向函数传递一个大小可变的矩阵。动态数组的原理,是利用一块或多块动态分配的内存存储各维的首地址,这样就可以p[i][j]的形式访问数组的数据了。但是,动态数组并非真正的数组,它只是对数组的一种模拟。由于具有数组类型的数组名是系统行为,在用户这一级没法做到,因此只能以指针的形式存放首地址,sizeof(p)和sizeof(p[i])结果都是 ...
讲到第五章了,数组两个字还离不开我们的左右,数组的内容也真多,另一方面也因为数组与指针的关系的确非常密切。
通常,对于int a[8][9]这个二维数组,我们可以这样定义一个指向它的指针:
int (*p)[9];
这个声明的形式跟人们所熟悉的int *p的形式大相庭径,初学者通常会感到迷惑,不理解的地方大致有四个:
1。为什么会以这种形式声明?
2。(*p)应该如何理解?
3。为什么必须把第二维显式地声明?
4。为什么忽略第一维?
下面我们就一起逐个讨论这四个问题:
1。这种形式是C标准的声明语法规定的,由于本章不 ...
数组是存在于人们头脑中的一个逻辑概念,而编译器其实并不知道有数组这个东西,它所知道的,只是[]运算符,当遇到[]运算符的时候,编译器只是简单地把它转换为类似*(*(a+i)+j)这样的等价表达式,之所以是这种表达式,如 ...