2009年03月10日
标签: 怎么被收录, 收录地址, 网站收录
发布在 web | 没有评论 »
2009年03月8日
c语言里的sizeof 是一个计算数据存储空间大小的单目运算符,它返回数据所占的字节个数, 我们可以先来看看MSND里的定义:
sizeof Operator
sizeof expression
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.
The expression is either an identifier or a type-cast expression (a type specifier enclosed in parentheses).
When applied to a structure type or variable, sizeof returns the actual size, which may include padding bytes inserted for alignment.
When applied to a statically dimensioned array, sizeof returns the size of the entire array. The sizeof operator cannot return the size of
dynamically allocated arrays or external arrays
这段话大概讲的就是:
1:sizeof运算符可以得到变量和类型存储空间的大小,大小是以字节为单位的,如一个变量a所占的空间是2个字节,那么sizeof(a) == 2。
2:如果a是一个数据类型,那么必须加括号表示为sizeof(a)形式,如果a是变量sizeof a也是可以的,但通常都写成sizeof(a)形式。
3:当sizeof 应用于结构体或变量时,它返回实际所占的空间大小,这个空间可能包括编绎器为了内存对齐而插入的额外的字节。
4:当sizeof应用于静态多维数组时,它返回整个数据的大小,但sizeof 不能应用于对态分配的数组。
下面举例说明sizeof的运用
1. 用于类型
sizeof(int) //返回4,表示整形数占4个字节,其实这个与系统有关, 一般linux和32位windows都返回4;
sizeof(char) //返回1;
struct student {
int age;
char name[20];
};
sizeof(student);// 返回24;
struct student {
int age;
char sex;
};
sizeof(student);// 返回8, 这里为什么会返回8呢,一个int占4个字节, 一个char占一个字节, 应该是5个字节啊, 其实不这样的, 编绎器为了更高效率而使得内存对齐, 为char sex另外插入了3个字节, 所以返回8;
2. 用于变量
int a = 100;
sizeof(a);//返回4, 一般根据它的类型而决定它所占空间大小
long float f = 33.00;
sizeof(f );//返回8,
char *p;
sizeof(p );//返回4, 这里p是一个指针变量,sizeof(p)返回这个指针变量所占的空间大小, 而不是字符p所占的空间大小(一个字符只占一个字节)。
3. 用于数组
int int_arr[5];
sizeof(int_arr);//返回20, 而不是5,当用于数组时, 它返回这个数组所点的总字节数, 而不是数组无素的个数;
标签: c c++ sizeof, sizeof
发布在 c c++ | 没有评论 »
2009年03月5日
find是linux中常用的文件和目录的查询命令,掌握它有利于提高工作和学习的效率.
find命令常用格式为
find pathname -options [-exec -ok ...]
1. pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录,用~来表示当前用户根目录,或详细路径如:/var/www/, 表示在/var/www/下查找。
2. -options 用来过滤的一些选项,如用 -name可以按名字来查找, -user可以按照文件属主来查找文件, -group按照文件所属的组来查找文件。例如find . -name “abc*” 可以用来查找当前目录下所有以abc开头的文件,
3. -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ {} \;,注意{}和\;之间的空格。例如:find . -type f -exec ls -l {} \; 可把当前目录所有文件用ls命令列出来,显示的结果形如: [gene@localhost commandTest]$ find . -type f -exec ls -l {} \;
-rwxrwxrwx 1 root gene 14 Mar 5 21:22 ./abc.c
-rw-rw-r– 1 gene gene 21 Mar 5 21:23 ./abc-cope.c
4. -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。例如: [gene@localhost commandTest]$ find . -type f -ok ls -l {} \;
< ls … ./abc.c > ? n
< ls … ./abc-cope.c > ? y
-rw-rw-r– 1 gene gene 21 Mar 5 21:23 ./abc-cope.c
-exec接受的参数不能够太长,如果find到的文件太多, 就会导致溢出错误,这时就可以用xargs来代替它。
5. xargs – build and execute command lines from standard input
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
来个例子:查看当前目录所有文件的属性 [gene@localhost commandTest]$ find . | xargs file
.: directory
./abc.c: ASCII text
./abc-cope.c: ASCII text
标签: find命令, linux find命令
发布在 linux, 技术 | 没有评论 »
2009年02月28日
花了半天的时间, 终于把自己的个人博客开通了,开通的过程可谓是顺利而快速, 这不得不说是得益于开源工具的强大和主机供应商优良的服务。互联网已经发展成为了我们生活当中不可或缺的一部分,我也几乎每天都与网络有接触,但一直以来都是看别人的内容,很少在这个浩瀚的网络世界里留下点什么, 说来惭愧, 自己作为一个IT人, 却今天才在这个无限的空间里置得自己的这一亩三分地, 希望今后能够坚持下去,经营好这块田地,能够分享更多更好的东西给各位朋友!
标签: 创建博客, 博客开通, 开通博客
发布在 日志 | 一条评论 »