一、大型软件组织
定义规则,规则就是协议。用户和中介的接口。
软件开发的过程:
定义规则,定义协议。软件为用户提供的功能。
在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)的更多相关文章

  1. 第二十六节:复习Java语言基础-Java的概述,匿名对象,封装,构造函数

    Java基础 Java语言概述 Java语言 语言 描述 javaee 企业版 javase 标准版 javame 小型版 JDK JDK(Java开发工具包) Java语言 语言 Java语言 Ja ...

  2. OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  3. 李洪强iOS开发之OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  4. Golang 入门系列(三)Go语言基础知识汇总

    前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html ...

  5. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  6. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

  7. C语言基础知识-程序流程结构

    C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...

  8. C语言基础知识-运算符与表达式

    C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...

  9. C语言基础知识-数据类型

    C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...

随机推荐

  1. 搭建LVS+Keepalived负载均衡集群

    这两天学习了LVS+Keepalived负载均衡的搭建.网上的教程非常多,可是动起手来遇到不少问题. 如今把自己的搭建过程以及遇到的一些问题给分享下. 硬件环境: Macbook 8G内存.250G ...

  2. java如何实现替换指定位置的指定字符串的功能

    /**  * @创建日期 2013-07-15  * @创建时间 14:25:59  * @版本号 V 1.0  */ public class CosTest {     public static ...

  3. 小议:部署SharePoint 2013时,无法连接SQL Server问题

    最近在给学员培训时发现,个别学员在完毕SharePoint 2013部署时,无法连接SQL Server,两种报错情况,例如以下所看到的: :配置SharePointConnect to SQL Se ...

  4. Android Studio第一次启动的Fetching android sdk component information的问题

    1)进入刚安装的Android Studio文件夹下的bin文件夹.找到idea.properties文件,用文本编辑器打开. 2)在idea.properties文件末尾加入一行: disable. ...

  5. Git项目删除文件

    场景:项目中有一个文件test_exam_copy 文件之前提交上去的,现在不想要,本地也不要 方案一(手动图示删除): 直接登录到gitLab上面,进入该文件详情,直接删除,然后本机push下,则库 ...

  6. 多个结果显示成一个group_concat函数

    需求:获取班级.课程中文名.老师 扩展:一个班级一门课程,老师可能多个,想把多个教师显示成在一个结果里 解决方案:加个group by 参考资料:https://www.cnblogs.com/zhu ...

  7. Cocos2d-x飞机大战教程笔记

    咳咳~跟着大神的教程学做Cocos2d-x的飞机大战...鉴于我是那种跟着教程都会出非常多错的人,所以还是一路跟着做些笔记比較好.并且因为是用课余时间,所以仅仅能断断续续地做,写下来也好让自己别忘记~ ...

  8. Struts 配置文件

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...

  9. pair类型 这次遇到了,记录下来,方便彼此xue习

    首先,这个pair类型是在头文件utility.h中. 一个piar保存两个数据成员,是用来生成特定类型的模板,当创建一个pair时,我们必须提供两个类型名,pair的数据成员将具有对应的类型,两个类 ...

  10. HTTP权威协议笔记-10.HTTP-NG

    1.HTTP发展中存在的问题 复杂性   其连接.报文.及功能逻辑之间的混合使用相当复杂,使用容易出错 可扩展性 传统流行下来的http应用很难实现扩展性,且无法兼容 性能      高延时.低吞吐 ...