如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
通过一周半的时间学习《C和指针》一书,对于大学所学的肤浅的C语言知识又有了更深入的了解。以下是主要学习内容:数据、语句、操作符数据的基本类型:整型,浮点型,指针类型。代码块作用域:在代码块开始声明的标识符都有代码块作用域。函数形参的作用域开始于形参的声明处,位于函数体之外。文件作用域:任何在所有代码块之外声明的标识符都有文件作用域,它表示这些标识符从它们的声明之处直到它们所在的源文件结尾处都是可以访问的。原型作用域:只适用于在函数原型中声明的参数名。函数作用域:只适用于标签语句。静态(static)变量凡是在任何代码块之外生命的变量总是存储于静态内存中,在程序运行之前创建,在程序的整个执行期间始终存在。自动(auto)变量存储在堆栈中在程序执行到声明自动变量的代码块时,自动变量才被创建,当程序离开时,变量销毁。语句的格式嵌套要注意括号的使用。操作符包括算数操作符,赋值操作符,关系操作符,条件操作符。各个不同类型的之间的的值不能直接进行运算,除非其中之一的操作数转换为另一操作数的类型。操作符的优先级决定了相邻的操作符哪个被先执行。指针、函数、数组指针就是它的值表示内存地址的变量。指针变量的值并非它所指向的内存位置所存储的值。我们必须使用间接访问来获得它所指向位置存储的值。对一个“指向整型的指针”施加间接访问操作的结果将是一个整型值。声明一个指针变量并不会自动分配任何内存。在对指针执行间接访问前,指针必须进行初始化:或者使它指向现有的内存,或者给它分配动态内存。NULL指针式式不知想任何东西的指针。它可以复制给一个指针,用于表示那个指针并不指向任何值。数组参数的传参原则:传递给函数的标量参数式传值调用的。传递给函数的数组参数在行为上就像他们是通过传址调用的。数组和指针区别内存:声明一个数组时,编译器将根据声明所指定的元素数量为数组保留内存空间,然后再创建数组名,它的值是一个常量,指向这段空间的起始位置。声明一个指针变量时,编译器只为指针本身保存内存空间,并不为任何整型值分配内存空间。参数传递:当数组名作为函数参数传递时,实际传递给函数的是一个指向数组第一个元素的指针。函数所接收到的参数实际上是原参数的一份拷贝,所以函数可以对其进行操作而不会影响实际的参数。但是,对指针参数执行间接访问操作允许函数修改原先的数组元素。sizeof(keyword)表示整个数组所占的字节数sizeof(keyword[0])表示数组每个元素所占的字节数结构、链表、动态分配内存单链表是一种使用指针来存储值的数据结构。把一个新节点链接到链表中需要两个步骤:首先,新节点的link字段必须设置为指向它的目标后续节点。其次,前一个节点的link字段必须设置为指向这个新节点。双链表中的每个节点包含两个link字段:其中一个指向链表的下一个节点,另一个指向链表的前一节点。malloc和calloc之间的主要区别是后者在返回指向内存的指针之前就把它初始化为0。当数组被声明时,必须在编译时知道它的长度。动态内存分配允许程序为一个长度在运行时才知道的数组分配内存空间。malloc的参数就是需要分配的内存的字节数。calloc的参数是你需要分配的元素个数和每个元素的长度。calloc函数在返回前就把内存初始化为零。malloc函数返回时内存并未以任何方式进行初始化。回调函数:首先,改变比较的执行方式,这样的函数可以对任何类型的值进行比较。解决方案是使用函数指针。调用者编写一个函数,用于比较两个值,然后把一个指向这个函数的指针作为参数传递给查找函数。然后查找函数调用这个函数来执行值的比较。其次,向函数传递一个指向值的指针而不是值本身。函数有一个void*形参,用于接收这个参数。然后指向这个值的指针便传递给比较函数。剩下的半周时间,温习并补充笔记,同时对书中的实例程序进行操作,对一些程序以及用法有更直观的了解和认知。