- 博客(31)
- 资源 (22)
- 收藏
- 关注
原创 C语言深度解剖(精讲版)——读书笔记20 &&自己的一些理解
第四章 指针和数组一.地址的强制转换先看下面的例子:struct Test{ int Num; char *pcName; short sDate; char cha[2]; short sBa[4]; }*p;假设p的值为0x100000 ,那么下面这些表达式的值分别是多少?1).p+ 0
2012-04-30 18:59:35 984
原创 C语言深度解剖(精讲版)——读书笔记19 &&自己的一些理解
第四章 指针和数组再论a 和 &a之间的区别:char a[5]={'A','B','C','D'}; 首先强调1个知识点:a 和 &a的值是相同的,但是意义不相同;a是数组首元素的首地址; &a是整个数组首地址;下面来看一下:int main(){ char a[5]={'A','B','C','D char (*p3)[3] = &a;
2012-04-30 00:36:00 1858
原创 C语言深度解剖(精讲版)——读书笔记18 -指针数组&&数组指针
第四章 指针和数组指针数组和数组指针(这是我特别容易忘记搞混的内容)一.指针数组 和数组指针 的内存布局指针数组:首先它是一个数组,数组的元素都是指针,数组占多少字节由数组本身决定。它是“存储指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32位系统下永远是占4个字节,至于它指向的数组占多少字节并不知道。它是“指向数组的指针”的简称;[我来说说自己的简记方
2012-04-29 22:35:31 1279
原创 C语言深度解剖(精讲版)——读书笔记17 &&自己的一些理解
第四章 指针和数组指针和数组的特性总结:区别要点指针数组存储的内容保存数据的地址,任何存入指针变量p的数据都会被当做地址来处理。p本身的地址由编译器另外存储,存储在哪,我们不知道保存数据,数组名a代表数组首地址。&a才是整个数组的首地址。a本身的地址由编译器另外存储,存储在哪里,我们并不知道。访问数据的方式间接访问数据,首先取得
2012-04-29 21:55:53 685
原创 C语言深度解剖(精讲版)——读书笔记16 &&自己的一些理解
第四章 指针和数组指针和数组之间的恩恩怨怨一.以 指针|| 下标形式访问我们先来详细讨论他们之间的一些特点:例如,函数内部有如下定义:(a)char * p = "abcdef ";(b)char a[ ] = "123456";1.以指针的形式访问指针 && 以下标的形式访问指针(a)定义了一个指针变量p, p本身在栈上占4个字节,p里存储的是一块内存的首地址。
2012-04-29 20:47:19 838
原创 C语言深度解剖(精讲版)——读书笔记15 &&自己的一些理解
第四章 指针和数组数组一.数组的内存布局先看下面的例子:int a[5]; 数组示意图:数组包含5个int类型的数据 a作为右值时,代表数组首元素的首地址,而非数组的首地址;如图我们定义一个数组a时,编译器根据指定的元素个数和元素类型分配确定大小的一块内存(大小为:元素类型大小*元素个数),并把这块内存的名字命名为a。名字a一旦与这
2012-04-29 17:02:57 677
原创 C语言深度解剖(精讲版)——读书笔记14 &&自己的一些理解
第四章 指针和数组指针一.指针的内存布局先来看下面的例子: int *p;sizeof(p)=4 ; 这说明“咔”出的p的模子为4字节,显然这个模子不是“int”,虽然它的大小为4.既然不是int,那就一定是“int *”;下面我们来讨论“int *”; 一个“int *”类型的模子在内存上占4个字节的空间,然后把这个4字节大小的空间命名为p,同时限定
2012-04-29 13:11:41 859
原创 C语言深度解剖(精讲版)——读书笔记13 &&自己的一些理解
第三章 预处理“##”预算符和“#”运算符一样,“##”运算符可以用于宏定义函数的替换部分。这个运算符把两个语言符号组合成1个语言符号。看例子:#define XNAME(n) vo ##d如果这样使用宏: XNAME(i)则会被展开成: void“##”就是粘合的作用,将前后两部分粘合在一起; 网上关于这个符号找不到任何信息,想补充一些例子.....难!。。。
2012-04-28 22:36:34 702
原创 C语言深度解剖(精讲版)——读书笔记12 &&自己的一些理解
第三章 预处理因为这一节的读书笔记是关于:内存对齐的,我觉着《C语言深度解剖》这本书关于这个主题讲得不太清楚,所以自己再看了一些资料,读到了一篇关于内存对齐研究的好文章(链接):内存对齐的规则以及作用 verygood!的一篇文章! 在读完此篇文章的基础上写下,下面的读书笔记。 我们可以利用#pragma pack()来改变编译器的默认对齐方式:#pragma pack(n
2012-04-28 21:50:49 700
转载 内存对齐的规则以及作用 verygood!的一篇文章!
原文转自:http://www.cppblog.com/snailcong/archive/2009/03/16/76705.html 首先由一个程序引入话题://环境:vc6 + windows sp2//程序1#include using namespace std; struct st1 { char a ;
2012-04-28 21:14:33 1335
原创 C语言深度解剖(精讲版)——读书笔记11 &&自己的一些理解
第三章 预处理条件编译知识点一:条件编译的功能使得我们按不同条件去编译不同程序部分,因而产生不同的目标代码文件。这对程序的移植和调试很有用的。条件编译有3种形式:(1)第一种形式:#ifdef 标识符程序段1#else程序段2#endif上面这种形式的功能是:如果标识符已被#define命令定义过,则对程序段1进行编译;否则对程序段2进行编译。(2)
2012-04-28 20:40:14 807
原创 C语言深度解剖(精讲版)——读书笔记10 &&自己的一些理解
第三章 预处理 知识点一:预处理指令预处理名称意义#define宏定义#undef撤销已定义过的宏名#if#endif#if 的一般含义是:如果#if后面的常量表达式为true ,则编译它与#endif之间的代码,否则跳过这些代码 #else#else 命令的功能有点像C语
2012-04-28 13:20:14 1028 2
原创 C语言深度解剖(精讲版)——读书笔记9 &&自己的一些理解
第二章 符号 知识点一:反斜杠(\)的两种用途:反斜杠\有两种用途:1. “接续符" ----编译器会将反斜杠剔除掉,跟在反斜杠后面的字符自动接续到前一行;(注意:反斜杠之后不能有空格,反斜杠的下一行之前不能有空格)看看下面的例子:cha\r* s="这是一个合法的\\n字符串";2.用作转义字符的开始标识。 例如:\n \t \b 知
2012-04-27 23:03:41 868
原创 C语言深度解剖(精讲版)——读书笔记8 &&自己的一些理解
第二章 符号 注释符号知识点一:几个似是而非的注释问题C语言的注释可以出现在C语言代码的任何地方,这句话对不?好,我们来从下面的例子分析中找出答案:例: (a) int /*....*/i; (b)char *s="abcdefg //hijklmn"; (c) //Is it a \
2012-04-27 20:50:02 905
原创 C语言深度解剖(精讲版)——读书笔记7 &&自己的一些理解
第一章 :关键字union 关键字知识点一: 在union中所有的数据成员共用一个空间,同一时间只能存储其中一个数据成员,所有数据成员具有相同的起始地址。例如: union StateMachine { char character;
2012-04-27 11:23:05 1050 1
原创 C语言深度解剖(精讲版)——读书笔记6 &&自己的一些理解
第一章: 关键字最易变的关键字----volatile说到volatile的易变让我想起了一个星座....你猜才是什么星座?--- 双子座!双子座的人是一个多变性格出了名的;volatile用它修饰的变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件、线程 其他等;遇到这个关键字声明的变量,编译器对访问该变量的代码不再进行优化,从而可以提供对特殊地址的稳定访问。先看看下面
2012-04-26 22:30:01 957
原创 C语言深度解剖(精讲版)——读书笔记5 &&自己的一些理解
第一章: 关键字const关键字----或许叫它readonly更合适const 的缩写:constant “恒定不变”的意思。也翻译为常量或常数,所以被认为const修饰的值是常量。这种想法不太精确。更精确的说:const是修饰只读变量;其值在编译时不能被使用,因为编译器不知道其存储的内容。 知识点一:const 产生的初始目的是:为了取代预编译指令,消除它的缺点、继承它的
2012-04-26 21:48:32 948
原创 收获1
1.这个世界成功人的总是少数,我们都只是平凡的人,我们需要有一种平凡且进取的心态去生活,不要期望有多少付出就一定有多少回报,相信没有付出就没有回报就可以了。2.搞清楚以下九个顺序,做事不费力职场:先升值,再升职;沟通:先求同,再求异;执行:先完成,再完美
2012-04-26 09:47:19 686
原创 C语言深度解剖(精讲版)——读书笔记4 &&自己的一些理解
第一章 关键字void关键字(感言:很多人认为 void无需重视,其实它很重要)知识点一:void * 则为“空类型指针”,void *可以指向任何类型的数据;void 真正的作用:对函数返回的限定;对函数参数的限定;举例:如果指针p1 和p2的类型相同,那么我们可以直接在p1和p2间相互赋值;如果p1和p2指向不同数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指
2012-04-25 22:15:25 816
原创 C语言深度解剖(精讲版)——读书笔记3 &&自己的一些理解
第一章 关键字知识点一:break 和continue的区别关键字 区别break表示:终止本层循环continue表示:终止本次循环(即:本轮循环终止,进入下一轮循环) 这个我一直记性不好:特别再写一下,加深记忆:while(){} ; f
2012-04-25 21:22:24 929 1
原创 C语言深度解剖(精讲版)——读书笔记2 &&自己的一些理解
第一章:关键字知识点一:最“小气”的关键字----static 关键字static在C语言中主要有2个作用:作用一:修饰变量 变量又分为全局变量和局部变量,但它们都存在内存的静态区;修饰变量的类型
2012-04-25 18:21:24 1412 2
原创 C语言深度解剖(精讲版)——读书笔记1 &&自己的一些理解
第一章:关键字翻开第一页:这里有32个关键字的标准定义,我这里只选几个我在校笔试经常考到的和自己还不太记得的:关键字意义static声明静态变量const声明只读变量volatile说明变量在执行过程中可以被隐含地改变typedef用于给数据类型取别名register声明寄存器变量
2012-04-25 17:14:22 1334
原创 内核Kconfig 与 Makefile 文件分析
一.内核构造系统简介 内核是个复杂庞大的系统,对它进行配置、裁剪、编译原本非常地复杂和困难,但现在却只需要简单的两个命令:(1)make menuconfig ;(2)make uImage 就搞定了,原因是在其背后有一个设计精巧的内核构造系统帮助我们精确的完成了各项任务。内核构造系统最关键的组成元素就是各个目录下的Kconfig 文件和 Makefile文件,本节将对这两
2012-04-25 11:36:26 6727
原创 为S3C2440移植内核
1.修改晶振频率 S3C2440支持两种频率:12MHZ 和16MHZ.目前市面上出售的开发板大多使用的是12MHZ的晶振,而内核源代码采用的是16MHZ频率,从而产生了错误的PCLK,因此导致内核向串口输出数据时使用了错误的比特率(正确的应该是),这样在超级终端上看到的就是乱码。因此我们只须修改内核源代码中的晶振频率即可。 将内核顶层目录下的 arch /arm/
2012-04-24 22:23:24 1688
原创 ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之三“UBIFS镜像的制作&&烧写”
一、移植环境§主机:vmware-redhat5 §开发板:mini2440--256MB nandflash§kernel:2.6.29 编译器:arm-linux-gcc-4.3.2.tgz §uboot: u-boot-2008.10 二、制作ubifs镜像步骤1:将文件系统制作成 ubifs镜像文件,需要使用mkfs.ubifs工具,
2012-04-19 16:23:26 10100 4
原创 ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之二“Linux内核中添加对UBIFS文件系统的支持”
一、移植环境§主机:vmware-redhat5 §开发板:mini2440--256MB nandflash§kernel:2.6.29 编译器:arm-linux-gcc-4.3.2.tgz §uboot: u-boot-2008.10 二.移植步骤1.在内核顶层目录下使用命令:make menuconfig ,进入内核配置菜单,添加对U
2012-04-19 13:55:19 5223 1
原创 ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之一“uboot中添加对UBIFS文件系统的支持”
为了更好的理解ubifs根文件系统的制作,首先,我们简单的说一下,系统的组成:Bootloader(uboot)parames(启动参数)kernel(内核)root Filesystem(根文件系统)bootloader(uboot)的作用就是用来加载操作系统;而嵌入式linux系统由linux内核和根文件系统两部分构成,两者缺一不可。
2012-04-18 21:34:06 5422 1
原创 原创和转载的感想
最近两个星期在移植ubi 和yaffs2根文件系统,遇到很多问题,没时间空出来总结思考写博文,但是看了这么多资料尤其是ubi文件系统的搜起来N对个页面的搜索结果,但是其实里面的资料缩减起来最多不超过5篇原创的其他都是转来转去,抄来抄去的,所以找下来很累。。。于是的我又有感想了:普通人写“(转载)别人的博客”;而大师写“自己原创的博客!”(博客仅限技术类)
2012-04-13 16:01:15 807 1
转载 内核移植出现的错误&&解决方法
转载自:http://bbs.chinaunix.net/thread-2033313-1-1.html 出现问题:## Starting application at 0x30008000 ...Uncompressing Linux.............................................................解决方案:se
2012-04-09 00:17:20 1320
原创 You have new mail in /var/spool/mail/root 烦不烦你?
有时在进入系统的时候经常提示You have new mail in /var/spool/mail/root你觉得烦人---解决方法:修改系统配置文件/etc/profile,告诉系统不要去检查邮箱.具体操作:命令行输入:echo "unset MAILCHECK" >> /etc/profile 【把unset MAILCHECK加到文件/etc/profile 的尾部】然后重新登
2012-04-04 11:24:44 84503 5
原创 关于-/bin/sh:xx(命令) not found 的几种原因和解决办法
编写背后:昨天移植无线网卡到mini2440基本完成到最后一步:用命令:iwlist scanning 搜索网络时串口终端却出现了 -/bin/sh: iwlist not found ,后来请教老范老师点拨知道是库问题,最后自己找到问题、解决问题,才有此引发有所总结...... 关于-/bin/sh:xx(命令) not found 的几种原因:1./bin/目录下没有这个命令;
2012-04-01 12:57:23 223922 3
LPC1768例程
2013-06-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人