`
luliangy
  • 浏览: 97082 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C专家编程学习笔记

阅读更多

发现自己博客很久没有更新了,贴篇几个月前的读书笔记。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返回的内存大小实际都是2n次方。

 

总线错误:数据未对齐读写造成的错误;

内存对齐:数据项只能存储在地址是数据项大小的整数倍的内存位置上,与对齐有关的额外逻辑会使整个内

存系统更大更慢。由于内存对齐,Cache访问才能局限子啊一个一行或者单个页面中;

段错误:内存单元访问的异常,通常是由于指针的使用不合法所致。

 

数组是以指针的形式传递到函数中的,所以在函数中数组的访问实际是按照指针的规则进行访问的。

 

分享到:
评论

相关推荐

    C语言学习笔记集锦(教程)

    除了K&R的书籍,还有一本《C专家编程》同样值得推荐,特别是对于已经具备一定C语言基础的学习者。这本书深入探讨了C语言的高级主题,如内存管理、指针运算、预处理器等,能够帮助读者进一步提升C语言的运用能力。 #...

    C 专家编程 适合有一定C基础的人看

    《C专家编程》还特别强调了C语言的实用性和趣味性,希望读者能在学习编程的过程中感受到编程的乐趣,让编程成为一项充满挑战和生机的活动。书中讲述了诸多有趣的C语言故事和轶闻,比如与互联网相连的自动售货机、...

    visual C++程序设计学习笔记随书源码(全2-12章)

    《Visual C++程序设计学习笔记随书源码》是一份宝贵的学习资源,涵盖了从第二章到第十二章的完整内容,由刘春辉和徐健飞两位专家编著,出版于电子工业出版社。这个压缩包包含了一系列与Visual C++编程相关的源代码,...

    郝斌c语言视频教程笔记.zip

    配合提供的"郝斌c语言视频教程笔记.pdf",你可以对每个主题进行深入学习,笔记中可能包含了关键概念的总结、例题解析和课后习题,有助于你更好地理解和记忆所学内容。 通过这套教程,不仅能够让你建立起扎实的C语言...

    机器学习+深度学习笔记.pdf

    在进行机器学习和深度学习的学习和研究中,Python是最常使用的编程语言。Anaconda是一个开源的Python发行版本,其包含了Python和许多用于科学计算的库和工具。Jupyter Notebook是一个交互式的计算环境,可以让我们更...

    谭浩强老师C语言程序设计PPT及笔记

    而谭浩强老师作为我国计算机教育界的资深专家,在C语言的教学和推广上有着举足轻重的影响力,特别是其为初学者量身打造的《谭浩强老师C语言程序设计PPT及笔记》资源,更是成为了许多编程爱好者的启蒙教材。...

    《Unix Shell 实例精解》学习笔记(pdf,清晰)

    总结来说,《Unix Shell 实例精解》是一本全面、实用的教程,涵盖了从基础到高级的Shell编程知识,无论你是初入Shell编程的新手还是寻求提升的专家,都能从中受益匪浅。配合清晰的PDF版本,学习过程更加便捷,让Unix...

    Go学习笔记

    Go语言,也被称作Golang,是一种开源的编程语言,由Google开发,设计团队主要成员包括Robert Griesemer、Rob Pike和Ken Thompson,这三位都是在计算机科学领域具有深厚背景和丰富经验的专家。Go语言的设计初衷是为了...

    powerbuider经典学习笔记

    【PowerBuilder经典学习笔记】 PowerBuilder(PB)是一款由Sybase公司推出的强大的数据库应用程序开发工具,以其高效、灵活和易用性在企业级应用...这本学习笔记将深入讲解这些概念,帮助读者成为PowerBuilder的专家。

    java lecture note(Java学习笔记)

    Java学习笔记:全面掌握Java编程的核心知识与技能 在当今的软件开发领域,Java作为一种流行的、功能强大的面向对象编程语言,被广泛应用于各种场景,包括Web应用、移动应用、企业级应用等。本篇Java学习笔记旨在为...

    Linux学习笔记资料

    这份"Linux学习笔记资料"涵盖了从基础到高级的全面内容,旨在帮助读者逐步成为Linux运维专家。 首先,Linux基础篇主要介绍了Linux的发展历史、系统安装,特别是CentOS的管理。通过这一部分的学习,你可以了解Linux...

    尚观培训linux许巍老师关于c语言的课程笔记和讲义

    【尚观培训Linux许巍老师关于C语言的课程笔记与讲义】是针对想学习或深化C语言理解的IT从业者及爱好者的一份宝贵资源。尚观是一家知名的IT培训机构,其提供的课程涵盖了广泛的IT领域,包括嵌入式Linux驱动开发。这份...

    FPGA学习笔记 FPGA

    FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,允许用户根据需求自定义数字电路。在本文中,我们将探讨FPGA的学习路径、主要工具以及相关资源,旨在为初学者提供指导。 首先,学习FPGA需要掌握硬件...

    达内全套笔记

    “达内全套笔记”不仅是一份资料,更是一条完整的编程学习路线图。学习者在掌握这些基础知识之后,将能够根据个人兴趣和职业规划,选择合适的方向进行深入学习和实践,无论是成为一名全栈开发工程师,还是专注于某一...

    STM32的学习笔记 - 一步一步学ARM

    ### STM32的学习笔记 - 一步一步学ARM #### 重要知识点概述 1. **STM32简介与选择理由** - STM32是基于ARM Cortex-M内核的微控制器系列,广泛应用于各种嵌入式系统中。 - 开发者选择STM32作为学习平台的原因在于...

    GDAL-Python库学习笔记

    ### GDAL-Python库学习笔记 #### 一、GDAL 库简介 ##### 1.1 引言 GDAL(Geospatial Data Abstraction Library)是一个强大的库,旨在为栅格地理空间数据提供翻译与处理功能。对于从事地理信息系统(GIS)或遥感...

    Linux程序设计_学习笔记.doc

    对于C语言编程,Linux通常配备的是GNU C编译器(gcc),它是符合ANSI C标准的,并且是Linux发行版的标准组件。初学者可以通过编写经典的"Hello, World!"程序开始学习。在开发过程中,头文件通常位于/usr/include及其...

    C语言例题集(源代码,实例,程序,笔记)

    3. **ATmega16学习笔记**:ATmega16是一款常见的微控制器,常用于嵌入式系统开发。这里的笔记可能涵盖了如何使用C语言编写针对该芯片的程序,包括寄存器操作、中断处理、I/O口控制等内容,对于学习单片机编程非常有...

    C语言学习课件(北邮版)

    这个课件可能包含了一系列的讲座笔记、课后练习、实例代码和解题思路,由北京邮电大学的专家精心编撰。北京邮电大学作为中国知名的高等学府,其计算机科学教育具有较高的权威性,因此,这个课件的质量可以得到保证。...

    GDAL学习笔记.doc

    由于GDAL是跨平台的,因此可以在C/C++、Python、Ruby、VB、Java和C#等多种编程语言环境下使用,并保持一致的功能。 对于Python开发者而言,GDAL的Python接口与Numeric库的紧密结合,使得数据处理变得更加高效和直观...

Global site tag (gtag.js) - Google Analytics