发现自己博客很久没有更新了,贴篇几个月前的读书笔记。C专家编程,一本不错的介绍C语言的书,适合对C有初期了解的人读。
static: 变量在各个调用阶段保持延续性,函数只对该文件可见。
extern: 函数全局可见,变量表示该变量在其他地方定义。
gets函数不检查缓冲区的空间,多读取的字符会重写入堆栈,可能导致堆栈错误。
函数中的变量是在堆栈中分配的,当函数调用结束时会自动销毁。
int (*a)[10]--指向一个数组的指针,数组中元素是10;
int *a[10]--整型指针,指向一个10个元素的数组。
char* const *(*next)()--next是一个指针,指向一个函数,改函数返回一个指针,该指针指向一个类型为char的常量指针。
#define可被其他类型符修饰,typedef不能被修饰。
指针的使用:先去的指针的值,在用去的的值去访问对应地址的值,数组名访问是直接访问值,数组名是只读的,
定义指针时编译器不为指针所指对象分配空间,值分配指针本身的空间,但是字符串常量除外char *p = “abc”,编译通过,int *p = 10,编译不通过,指针没有经过初始化不能直接使用。
动态链接在程序运行时会查找相应的ABI,装载ABI进程序,因此程序会减小,但是运行速度回变慢,所有程序共享动态链接库,又称共享库;
EPC文件由段组成:
RSS段:声明但未初始化的变量
数据段:初始化了变量
文本段:程序指令区
堆栈段:保存局部变量,临时数据,传递到函数中的参数
堆:动态内存分配区,位于数据段中,堆中的内存分配容易产生内存碎片
活动记录:记录函数调用过程的记录。
cache存储器每次读取内存中的一行数据(16或者32字节);
cache块数据,一般是32字节;
cache与内存数据一致策略:全写法,回写法;
malloc返回的内存大小实际都是2的n次方。
总线错误:数据未对齐读写造成的错误;
内存对齐:数据项只能存储在地址是数据项大小的整数倍的内存位置上,与对齐有关的额外逻辑会使整个内
存系统更大更慢。由于内存对齐,Cache访问才能局限子啊一个一行或者单个页面中;
段错误:内存单元访问的异常,通常是由于指针的使用不合法所致。
数组是以指针的形式传递到函数中的,所以在函数中数组的访问实际是按照指针的规则进行访问的。
相关推荐
除了K&R的书籍,还有一本《C专家编程》同样值得推荐,特别是对于已经具备一定C语言基础的学习者。这本书深入探讨了C语言的高级主题,如内存管理、指针运算、预处理器等,能够帮助读者进一步提升C语言的运用能力。 #...
《C专家编程》还特别强调了C语言的实用性和趣味性,希望读者能在学习编程的过程中感受到编程的乐趣,让编程成为一项充满挑战和生机的活动。书中讲述了诸多有趣的C语言故事和轶闻,比如与互联网相连的自动售货机、...
《Visual C++程序设计学习笔记随书源码》是一份宝贵的学习资源,涵盖了从第二章到第十二章的完整内容,由刘春辉和徐健飞两位专家编著,出版于电子工业出版社。这个压缩包包含了一系列与Visual C++编程相关的源代码,...
“谭浩强C程序设计和读书笔记以及PPT”这部分可能是谭浩强老师的个人授课笔记,其中可能包含了他对C语言更深层次的见解和独特的解题方法,也可能包括了课堂讲解的PPT,这些都为读者提供了丰富的学习材料。...
在进行机器学习和深度学习的学习和研究中,Python是最常使用的编程语言。Anaconda是一个开源的Python发行版本,其包含了Python和许多用于科学计算的库和工具。Jupyter Notebook是一个交互式的计算环境,可以让我们更...
总结来说,《Unix Shell 实例精解》是一本全面、实用的教程,涵盖了从基础到高级的Shell编程知识,无论你是初入Shell编程的新手还是寻求提升的专家,都能从中受益匪浅。配合清晰的PDF版本,学习过程更加便捷,让Unix...
Go语言,也被称作Golang,是一种开源的编程语言,由Google开发,设计团队主要成员包括Robert Griesemer、Rob Pike和Ken Thompson,这三位都是在计算机科学领域具有深厚背景和丰富经验的专家。Go语言的设计初衷是为了...
【PowerBuilder经典学习笔记】 PowerBuilder(PB)是一款由Sybase公司推出的强大的数据库应用程序开发工具,以其高效、灵活和易用性在企业级应用...这本学习笔记将深入讲解这些概念,帮助读者成为PowerBuilder的专家。
Java学习笔记:全面掌握Java编程的核心知识与技能 在当今的软件开发领域,Java作为一种流行的、功能强大的面向对象编程语言,被广泛应用于各种场景,包括Web应用、移动应用、企业级应用等。本篇Java学习笔记旨在为...
配合提供的"郝斌c语言视频教程笔记.pdf",你可以对每个主题进行深入学习,笔记中可能包含了关键概念的总结、例题解析和课后习题,有助于你更好地理解和记忆所学内容。 通过这套教程,不仅能够让你建立起扎实的C语言...
这份"Linux学习笔记资料"涵盖了从基础到高级的全面内容,旨在帮助读者逐步成为Linux运维专家。 首先,Linux基础篇主要介绍了Linux的发展历史、系统安装,特别是CentOS的管理。通过这一部分的学习,你可以了解Linux...
【尚观培训Linux许巍老师关于C语言的课程笔记与讲义】是针对想学习或深化C语言理解的IT从业者及爱好者的一份宝贵资源。尚观是一家知名的IT培训机构,其提供的课程涵盖了广泛的IT领域,包括嵌入式Linux驱动开发。这份...
FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,允许用户根据需求自定义数字电路。在本文中,我们将探讨FPGA的学习路径、主要工具以及相关资源,旨在为初学者提供指导。 首先,学习FPGA需要掌握硬件...
### GDAL-Python库学习笔记 #### 一、GDAL 库简介 ##### 1.1 引言 GDAL(Geospatial Data Abstraction Library)是一个强大的库,旨在为栅格地理空间数据提供翻译与处理功能。对于从事地理信息系统(GIS)或遥感...
对于C语言编程,Linux通常配备的是GNU C编译器(gcc),它是符合ANSI C标准的,并且是Linux发行版的标准组件。初学者可以通过编写经典的"Hello, World!"程序开始学习。在开发过程中,头文件通常位于/usr/include及其...
3. **ATmega16学习笔记**:ATmega16是一款常见的微控制器,常用于嵌入式系统开发。这里的笔记可能涵盖了如何使用C语言编写针对该芯片的程序,包括寄存器操作、中断处理、I/O口控制等内容,对于学习单片机编程非常有...
这个课件可能包含了一系列的讲座笔记、课后练习、实例代码和解题思路,由北京邮电大学的专家精心编撰。北京邮电大学作为中国知名的高等学府,其计算机科学教育具有较高的权威性,因此,这个课件的质量可以得到保证。...
由于GDAL是跨平台的,因此可以在C/C++、Python、Ruby、VB、Java和C#等多种编程语言环境下使用,并保持一致的功能。 对于Python开发者而言,GDAL的Python接口与Numeric库的紧密结合,使得数据处理变得更加高效和直观...
【标签】中的“c语言 教程 c 编程 谭浩强”代表了这个压缩包的主要内容,涵盖了C语言学习的各个方面,包括基本的编程语法、编程实践以及与谭浩强教授相关的教学资源。 【压缩包子文件的文件名称列表】只有一个...