摘要: //________________________________//用地址传递的方式来实现两个数的交换//________________________________#include void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; }void main() { int val1 = 10, val2 = 20; cout void swap(int &a, int &b) { int temp; temp = a; a = b; b = temp; }void main() { i 阅读全文
posted @ 2013-11-21 19:04 天天向上... 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 研一时,很偶然的翻开谭浩强老先生的《C程序设计》(是师姐的书,俺的老早就卖了,估计当时觉得这本书写得不够好),很偶然的看到关于变量名的一段话:“变量名实际上是一个符号地址,在对程序编译连接时由系统给每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。”当时很震惊上课的时候居然没有发现这句蛮有深意的话语,可是研一的时候还是没有完全明白,只是知道有这么几个东西:变量名、内存地址、变量值。后来看到指针的地方,说到了“符号表”的这个东东,就更头大了。符号表到底是个什么样子?那个变量名到底放在内存的什么地方?最近在写驱动,面对的是一个芯片手册 阅读全文
posted @ 2013-11-21 19:02 天天向上... 阅读(2242) 评论(0) 推荐(0) 编辑
摘要: 一般的来说,函数是可以返回局部变量的。局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意这里指的是栈,返回指向堆内存的指针是可以的)。 下面以函数返回局部变量的指针举几个典型的例子来说明:1:[cpp]view plaincopy#includechar*returnStr(){char* 阅读全文
posted @ 2013-11-21 19:01 天天向上... 阅读(4750) 评论(2) 推荐(2) 编辑
摘要: 首先了解内存,内存就是一排房间,编号从0开始,0,1,2,3,4,5......房间里面一定要住人,新人住进去了,原来的人就走了;不管你住不住,里面都有人、编号就是地址、里面的人就是内容,为了我们(人)记着方便,我们给他们起些名字,如张三、李四、于是,变量,就是一个房间,它有编号(地址),他有名字(变量名),他有内容(里面的人)、inta=3;//a是名字,3是内容,地址可以假设是0x12345678(通常就是32位地址)、//0x12345678这个房间里面住的是一个int,所谓指针变量,就是一个房间,他里面的内容,可以放个地址;如int*pi=&a;//pi是名字,内容就是a的地址 阅读全文
posted @ 2013-11-21 18:31 天天向上... 阅读(3448) 评论(0) 推荐(0) 编辑