C && Linux C 语言
karry_vcent
这个作者很懒,什么都没留下…
展开
-
内存对齐方式的探究
什么是对齐,以及为什么要对齐: 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是转载 2011-08-02 21:29:24 · 957 阅读 · 0 评论 -
GUN C 扩展之括号中的复合表达式
在linux的世界里,你可能会看到过很多没有见过的结构和语句方式,你可能不知道他们的用途,比如说括号中的复合表达式例如:#include #define max(x,y) \ ({ int z;\ if (x>y) z = x;\ else z = y;\ z;\ }) int main(int argc, char** argv){ max(3,5);原创 2013-02-05 15:44:15 · 1159 阅读 · 0 评论 -
c语言面试精华版(1)
1. 下面的函数有什么错误:int square(volatile int *ptr){return *ptr * *ptr;} 编译器将产生类似下面的代码:int square(volatile int *ptr){ int a,b; a = *ptr; b = *ptr; return a * b;}答案:由于*ptr的值可能被意原创 2011-11-22 12:30:50 · 1001 阅读 · 0 评论 -
结构体或联合体中的位域
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域转载 2011-11-22 16:14:45 · 3652 阅读 · 0 评论 -
type高级用法——分类展示
字符指针char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量 //的指针和一个字符变量; typedef char* PCHAR; // 一般用大写 PCHAR pa, pb;原创 2011-09-28 17:15:17 · 611 阅读 · 0 评论 -
char str[]="hello" 与 char *str="hello" 不是等价的
char str[]="hello" 与 char *str="hello" 不是一回事 char str[]="hello" 分配在栈上,生命周期随着函数执行完而被回收char *str="hello"分配在堆上,直至整个程序结束才进行回收 #includ原创 2011-08-23 19:36:23 · 3268 阅读 · 1 评论 -
int(*p)[2] 与 int *p[2] 的区别
int(*p)[2]是一个指针,是一个指向数组的指针,也是二维数组的行指针。int a[3][4] ={0};p = a; 可以把a赋给p,因为p指向二维数组的行指针。当然p = a+1;等等都是正确的。 int *p[2]; 声明了一个数组,数组名为p,数组里面原创 2011-08-23 14:40:49 · 1722 阅读 · 0 评论 -
linux终端下输出彩色文字
printf("\033[0;37m%s \033[0m","K_Linux_Man");printf("\033[0;34;1m%s \033[0m","K_Linux_Man");printf("\033[0;32;1m%s \033[0m","K_Linux_原创 2011-08-22 19:58:08 · 1492 阅读 · 0 评论 -
linux c编程-实现文件夹的递归拷贝
copy(读取的路径或名字,目标文件的路径或名字){ if(读取的是一个文件夹) { 创造一个文件夹 打开文件夹,读取文件夹的内容 判断是否是一个文件夹 是:递归copy(xx,原创 2011-08-22 19:57:31 · 5848 阅读 · 4 评论 -
数组名原来这么有意思!!---数组名的奥秘
一维数组:代码:#includeint main(int argc,char **argv){ int a[5]; printf("%p\n",a); printf("%p\n",&a); printf("%p\n",&a[原创 2011-08-02 22:05:48 · 970 阅读 · 1 评论 -
自己的bash,自己的shell终端
源文件名为my_shell.cReceive_cmd() 获取输入的参数,并放入全局变量的cmd_argc,和cmd_argv里面my_shell() 创建一个进程,主进程一直不停循环打印K_Linux_Man@MyVi: 子线程去调用系统在/usr/includ原创 2011-08-22 20:16:09 · 895 阅读 · 0 评论 -
Union的巧妙运用,判断系统大小端
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。首先看一段代码:union myun {struct { int x; int y; int z; }u; int k; }a; int main() {转载 2013-02-18 14:45:13 · 2410 阅读 · 2 评论