HelloWorld

ASM,C,LUA,LINUX(gentoo)
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年9月27日

摘要: 1.多维数组的初始化中,除过第一维外其他维的大小都必须显式的给出 int a[][3]={ {3,1}, {4,5,6}, }; 阅读全文

posted @ 2011-09-27 20:57 光铭 阅读(99) 评论(0) 推荐(0) 编辑

摘要: " When started as "evim", evim.vim will already have done these settings.if v:progname =~? "evim" finishendif"禁止显示滚动条set guioptions-=lset guioptions-=Lset guioptions-=rset guioptions-=R"encondingset encoding=utf-8set fileencoding=chineseset fileencodings=ucs-bom,ut 阅读全文

posted @ 2011-09-27 20:06 光铭 阅读(822) 评论(0) 推荐(0) 编辑

摘要: #include<stdio.h>#define SIZE 5; void print1(int *a){ int i; for(i=0; i < SIZE; i++) //expected expression before ';' token printf("%d\n",a[i]);}void print2(int a[]){ int i; for(i=0;i < SIZE;i++) //expected expression before ';' token printf("%d... 阅读全文

posted @ 2011-09-27 19:56 光铭 阅读(356) 评论(0) 推荐(0) 编辑

2011年9月26日

摘要: 1.初始化 静态变量(包括静态数组)只初始化一次的,也就是在程序开始之前执行。程序并不需要执行指令把他们放到特殊的位置,他们一开始就在那里了。当它没有被初始化时,它的值会被自动设置为0。当文件被载入到内存中准备执行时(操作系统中的就绪状态),初始化的程序指令和静态变量一样被载入到内存中。因此当程序执行时,静态变量已经初始化完毕。 自动变量位于运行时堆栈中,执行流每次进入它所在的代码块时,这些变量每次所处的内存位置可能并不相同。在程序开始之前,编译器没有办法对这些变量进行初始化。所以自动变量在缺省情况下时是未初始化的,比如 int i; 此时编译器会给它一个随机值,不会对它进行初始化。如果自.. 阅读全文

posted @ 2011-09-26 23:16 光铭 阅读(431) 评论(0) 推荐(0) 编辑

2011年9月25日

摘要: 0.数组和指针并不是相同的我们声明数组时,同时分配了一些内存空间,用于容纳数组元素,但是当我们声明一个指针时,只分配了用于容纳指针本身的内存空间。从这个方面也可以理解sizeof后面跟数组名和指针名的不同。什么时候数组和指针相同呢?c语言标准对此做了如下说明规则1.表达式中的数组名被编译器当作一个指向该数组的一个元素的指针规则2.下标总是与指针和偏移量相同规则3.在函数参数的声明中(形式参数),数组名被编译器当作指向该数组第一个元素的指针1.数组名是一个常量指针,并不是一个左值1 #include<stdio.h>2 int main(int argc,char **argv)3 阅读全文

posted @ 2011-09-25 19:05 光铭 阅读(926) 评论(0) 推荐(0) 编辑

2011年9月20日

摘要: 如果说哪种操作符能让我们捕捉到C变成的感觉,那必然是++或者--这两种之一 ----Pointers on C他们要求操作数必须是左值认识到这一点很重要:前缀和后缀的递增操作符都复制一份变量的拷贝。前缀操作符先增加变量的值再复制,后缀操作符先复制在增加变量的值这些操作符的结果并不是被他们修改的变量,而是变量值的拷贝。例如int a = 10;int c = a++;++操作符先把a拷贝,然后赋值给c,c变成了10,然后增加a的值,a变成了11。所以 a++和++a是无法作为左值的++a=10;//ERROR它们的结果是值的拷贝,而不是变量本身,你无法向一个值进行赋值#define N... 阅读全文

posted @ 2011-09-20 23:11 光铭 阅读(292) 评论(0) 推荐(0) 编辑

摘要: 副作用(side effect)是对数据对象或者文件的修改例如 int states = 50;它的副作用是把变量states的值设为50int a = 1;a++;a++表达式的值是1,副作用是让a加1,变成2一个顺序点(sequence point)是程序执行中的一点,在该点处,所有的副作用都在进入下一步前被运算。(详见c primer plus P104) 阅读全文

posted @ 2011-09-20 22:50 光铭 阅读(129) 评论(0) 推荐(0) 编辑

摘要: #include <stdio.h>#define TRUE 1#define FALSE 0int find_char(char **strings,char value){ char *string; while((string = *strings++) != NULL) { while(*string != 0) { if(*string++ == value) return TRUE; } }}int find_char_2(char **strings,char v... 阅读全文

posted @ 2011-09-20 22:31 光铭 阅读(151) 评论(0) 推荐(0) 编辑

摘要: 1 char ch = 'a';2 char *cp = &ch;简单的来讲,左值用来存储数据,右值就是要存储的值下面的地址不是严格意义上的地址,详见Pointers on C现在我们来观察ch当ch作为右值使用时,表达式的值为'a'当ch作为左值使用时,表达式的值是存放ch内存的地址现在观察&ch&ch作为右值,表示ch的地址&ch作为左值,不合法,因为&ch进行求值时,它的结果肯定会存放在内存中的某位置,但是存放在哪里呢?不知道。这个表达式并没有标识内存中的特定位置,所以它不是一个合法的左值。现在观察cpcp作为右值, 阅读全文

posted @ 2011-09-20 00:47 光铭 阅读(331) 评论(0) 推荐(0) 编辑

2011年9月19日

摘要: *(int *)100=25;这个表示把25存于位置100。先把整型100强制转换成整型的指针,然后对指针间接操作进行赋值。1 int a = 12;2 int *b = &a;3 int **c = &b;c是指向指针的指针。这里c相当于&b,*c相当于b,**c相当于a。 阅读全文

posted @ 2011-09-19 23:57 光铭 阅读(134) 评论(0) 推荐(0) 编辑