变长数组的问题
#
今天在gcc里写代码,偶然发现好像下标可以用变量(非const),比如:
int n=0;
scanf("%d",&n);
int a[n];//当然这里一定要有合法性判断
这个理念太颠覆了,从学c语言的时候就被灌输说数组长度是不可变的,想用可变长度的话,要么malloc一块内存,要么用vector这种动态表。后来试了试发现vc里是直接无法通过编译的。查到如下一段说明:
在C99中新加入了对变长数组的支持,即数组的长度可以由某个非const变量来定义。可变数组的空间大小直到程序运行时才能确定,因此只有程序在运行时才能为程序分配空间。在gcc编译器程序会在运行时根据实际指定的大小(变量当前的值)调节esp的值,为数组在栈上分配适当大小的空间。由于要在运行时才能...
指针数组,数组指针与函数指针
指针数组是指由指针组成的数组,这个比较好理解;数组指针是指向一个数组的指针,其实字面上也比较好理解。容易混淆的地方在于书写形式有些类似
:::cpp
int *p[n]; //array of pointers
int (*p)[n];//pointer to an array
关于Django url映射的一些小问题
#
之前写Django一直没想着去用patterns的prefix,偶然用的时候发现总不起作用,后来才发觉原来是写法的问题
urlpatterns = patterns('book.views',
(r'^(\w ).html$', 'default_render'),
)
在这种情况下肯定是没问题的,但是不排除会有同学跟我一样的写成如下的格式
urlpatterns = patterns('book.views',
(r'^(\w ).html$', default_render),
)
看到差别了吧,只有字符串才可以拼接嘛。
另外是关于Django 1.4之后的路径的问题,每个app被放到跟主project同级的目录,所以引用的时候都变成与proje...
通过goagent使用Picasa客户端
#
goagent这一神器就不多说了,配置详见goagent教程。这里主要探讨picasa客户端使用代理的问题。
picasa本身的代理设置只有一个用户名和密码,不明所以,所以一直用hosts文件的方法,但是后来发现配置里还有一项“自动检测网络设置”,勾选之后只要在系统里设置好goagent代理(PS,Internet选项那里,Linux没试,Linux下也没有picasa端吧),就可以使用代理上传照片了。
最后吐槽一下:picasa也是google神器了,更有牛逼的人脸识别,但自从picasa相册编程google plus相册之后,就有了很多纠结的问题。比如我只是想把认识的人圈点一下,结果你非要在Google Plus群发一条消息,这如何是我等低调之人所能容忍的。算了,pica...
在这个才人辈出的时代
#
偶然翻bootstrap的资料,在bootstrap的中文网站看到如下三个sample:
http://wrongwaycn.github.com/bootstrap/docs/examples.html
神吐槽,不解释。膜拜楼主。细软跑。
关于结构体字节对齐的一些问题
#
字节对齐的目的
字节对齐的作用不仅是便于cpu快速访问,同时合理的利用字节对齐可以有效地节省存储空间。对于32位机来说,4字节对齐能够使cpu访问速度提高,比如说一个long类型的变量,如果跨越了4字节边界存储,那么cpu要读取两次,这样效率就低了。但是在32位机中使用1字节或者2字节对齐,反而会使变量访问速度降低。所以这要考虑处理器类型,另外还得考虑编译器的类型。在vc中默认是4字节对齐的,GNU gcc 也是默认4字节对齐。
字节对齐的基本原则
如下三条
结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal...
495 post articles, 62 pages.