HelloWorld

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

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 光铭 阅读(306) 评论(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 光铭 阅读(134) 评论(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 光铭 阅读(156) 评论(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 光铭 阅读(346) 评论(0) 推荐(0)