复习C语言基础知识(day02)
- 一、大型软件组织
- 定义规则,规则就是协议。用户和中介的接口。
- 软件开发的过程:
- 定义规则,定义协议。软件为用户提供的功能。
- 在C语言中使用接口实现。接口就是函数。
- 两种用户 函数的使用者 函数的实现者
- 你要站在函数的实现者角度考虑函数。
- 、函数要完成的功能
- 、需要传递给函数的参数
- 、函数的返回值的类型
- 附加信息
- 作者:
- 时间:
- 将协议的每个部分都要实现,在C语言中如何来表示协议。
- 头文件
- 为了避免重复包含,需要使用头文件卫士。
- #ifndef 宏
- #define 宏
- /*文件的包含*/
- /*宏定义*/
- /*类型的定义*/
- /*函数的声明*/
- /*变量的声明*/
- #endif
- 什么叫变量的声明?
- 变量的声明就是变量作用域的扩充,并不为这个变量分配空间。变量的空间已经在其他文件中分配。
- 变量的定义是为这个变量分配空间的。
- 头文件中协议的实现者 源程序
- 头文件中协议的使用者 源程序 main
- 举例说明 软件开发的组织 代码参见 tmath文件夹。
- 在工程中,编译的基本单位是源文件。
- 如何将多个源文件拼接成一个可执行文件? 链接的过程
- nm 二进制文件
- 用来查看二进制文件中包含的符号。
- 什么是符号?
- 函数的名字 全局变量的名字 静态局部变量
- tarena@ubuntu:~//UC/day02/tmath$ nm add.o
- T t_add
- 0000000e T t_sub
- tarena@ubuntu:~//UC/day02/tmath$ nm mul.o
- 0000000c T t_div
- T t_mul
- tarena@ubuntu:~//UC/day02/tmath$ nm test.o
- T main
- U printf
- U t_add
- U t_div
- U t_mul
- 链接发生在程序的编译阶段。这种链接称为静态链接
- 有一种链接发生在代码加载到内存执行的时候,这种链接称为动态链接。
- 运行时文件
- *.o
- #include <>和“”?
- <> 在系统指定的路径下找头文件
- “” 首先在当前路径下找,如果没有找到,再到系统指定的路径下找。
- 什么是系统指定的路径?如何知道系统的指定路径?
- 在编译的过程中使用 -v参数。
- 这个参数的意思就是将这个编译链接的过程中产生的信息输出到显示器。
- 二、复习C语言 (指针、类型别名)
- 、变量和常量
- 不管是变量还是常量,在程序执行的过程中,都占用内存空间。
- 变量内存空间里的值是可以改变的,常量空间里的值是不能被改变的,是只读的。
- const int a=;
- int *p=&a;
- *p=;
- 、数据类型
- 什么是数据类型?
- 数据类型是在内存中占用的字节数。再者就是这些数据从内存中取出来的组织方式。
- int var_a=;
- char var_c='v';
- short
- long
- float
- double
- void
- * 指针不是地址
- int *p;
- 举例说明 指针的理解 代码参见point.c
- gcc的参数:
- -Wall 显示所有的警告信息
- -Werror 显示所有的错误信息,警告也作为错误处理。
- int *p;
- int **p;
- 指针和一维数组的关系
- int arr[];
- arr是一个数组类型常量。
- arr是数组的名字。 这个数组里有三个元素。每个元素都是int类型的。
- 三个元素的地址空间是连续的。
- int *p=arr;
- p++;
- char *q=arr;
- q++;
- char *p[]; p是数组的名字,数组里的每一个元素都是指针类型的,这就是指针数组
- int main(int argc,char *argv[]){
- }
- 二维数组
- int arr[][]={{,,},{,,}};
- arr[] 和arr
- int[] 类型
- int (*p)[]; p是指针类型的变量
- int []; p+ 数组指针。
- p=arr arr是数组的名字,常量
- p是指针类型的变量
- 函数和指针的结合
- void *malloc(size_t size);
- int *p=(int *)malloc();
- int (*fun_t)(int,int);
- fun_t 是指针类型的变量
- int (int,int)是指针类型变量的访问方式。
- int t_add(int,int);
- fun_t=add;
- int (*fun_t[])(int,int);
- fun_t 数组的名字 数组里有4个元素。每个元素都是指针类型的。
- 代码参见 tmath文件夹中的point.c
- 数据的高字节存放在内存的低地址中。大端 主机字节序
- 作业:编写代码,测试自己的主机字节序。
- 、运算符的优先级及其结合性
- 、变量的作用域和生命周期
- int *p;
- int **p;
- int *p[];
- int (*p)[];
- int *f(void);
- int (*f)(void);
- int (*f[])(void);
- int char
- int arr[];
- int *p=arr;
- *(p+)
复习C语言基础知识(day02)的更多相关文章
- 第二十六节:复习Java语言基础-Java的概述,匿名对象,封装,构造函数
Java基础 Java语言概述 Java语言 语言 描述 javaee 企业版 javase 标准版 javame 小型版 JDK JDK(Java开发工具包) Java语言 语言 Java语言 Ja ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- Golang 入门系列(三)Go语言基础知识汇总
前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html ...
- ios开发学习笔记001-C语言基础知识
先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- C语言基础知识-程序流程结构
C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...
- C语言基础知识-运算符与表达式
C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...
- C语言基础知识-数据类型
C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...
随机推荐
- jquery 的ajax无刷新上传文件之后,页面还是会莫名的刷新-----解决办法
文件上传用到全局数组: $_FILES 只需要把下面的 <button onclick="post()">提交</button> 改为 <input ...
- mvn 仓库
http://mvnrepository.com/artifact/org.postgresql/postgresql/9.3-1103-jdbc41 ------------------------ ...
- HBase编程实例
摘要:在前文中安装了Hbase,通过Hbase shell能够进行一些操作.可是和实际的编程实例联系起来不方便,因此本文介绍有关Hbase编程的实例. 一.使用Eclipse开发HBase应用程序 1 ...
- QueryString 地址栏参数
MXS&Vincene ─╄OvЁ &0000002 ─╄OvЁ MXS&Vincene MXS&Vincene ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...
- 美团网 KVM虚拟化公开课学习笔记
KVM优化技术,美团开放平台--邱剑 基于KVM现有选项做一些优化.视频地址:http://www.osforce.cn/course/77/learn#lesson/80 CPU调优: 1.Cont ...
- Python游戏server开发日记(一)目标
到了新的环境.老大让我有空研究下一代server技术,作为一个长期任务. 新的server想达到的目标: 1.分布式系统,对象(Entity)之间的关系类似于Actor模型. 2.逻辑服务,是单进程. ...
- 初探Java中的异常处理
Java中的异常有以下几种: 1) Error:Java运行时的内部错误. 2) Exception:程序中应该捕获的异常. RuntimeException:因为编程产生的错误 ...
- Exchange 2013 的会议室邮箱用户一直无法正常登陆。
某客户使用了Exchange 2013 server作为邮件承载server.详细版本号为Exchange 2013 SP1. 如今客户有个需求,希望他们的邮箱作为会议室邮箱创建,并且必须有普通邮箱全 ...
- STL_算法_填充新值(fill、fill_n、generate、generate_n)
C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) 全部容器适用 fill(b,e,v) //[b,e) 填充成v fill_n(b,n,v) ...
- vijos P1459车展
P1459车展 Accepted 标签:数据结构 平衡树数据结构 堆重游SC theme Park 描述 遥控车是在是太漂亮了,韵韵的好朋友都想来参观,所以游乐园决定举办m次车展.车库里共有n ...