复习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 ...
随机推荐
- Gevent的协程实现原理
之前之所以看greenlet的代码实现,主要就是想要看看gevent库的实现代码. .. 然后知道了gevent的协程是基于greenlet来实现的...所以就又先去看了看greenlet的实现... ...
- @Repository @Service 和@Autowired 的使用
解释: @Controller 声明Action组件 @Service 声明Service组件 @Service("myMovieLister") @Repositor ...
- Android eclipse导入项目后出现Unable to resolve target 'android-17'解决方法
eclipse导入项目后出现Unable to resolve target 'android-17'解决方法.在最后附带还有一种编译逻辑不成功情况解决方法. 一.问题情况 二.解决的方法 1.改动项 ...
- robin 今天来南大了
今天非常高兴,在学校的体育馆见到了李彦宏博士. 这是第一次真实的见到了曾经仅仅能在媒体上才干够见到的人,真实,感觉非常好. 我算不上李彦宏的粉丝,也不是非常热衷于百度这个公司,可是我如今仍然心情澎湃. ...
- 《编程导论(Java)·3.3.2 按值传递语义》
不要受<Java编程思想>的影响,计算机科学中的术语--按引用传递(pass-by-reference).不要搞成自说自话的个人用语. 这些术语也不是专门针对Java的,你不应该从某一本J ...
- linux(centos)下安装git并上传代码些许步骤(亲自验证过的步骤)
曾经听说了好多次github,但直到近期才第一次学习使用github来托管自己在linux下的代码! 说实话.我自己在使用的时候从网上查了好多教程.但总认为难以掌握(步骤过于繁琐),自己操作的时候还 ...
- Linux Framebuffer驱动框架之二软件架构(未完待续)【转】
本文转载自:http://blog.csdn.net/gqb_driver/article/details/12918547 /************************************ ...
- B1024 生日快乐 递归。。。
bzoj1024叫生日快乐,其实很简单,但是没看出来就很尴尬... Description windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕.现在包括win ...
- bzoj3673 & bzoj3674 & 洛谷P3402 可持久化并查集
题目:bzoj3673:https://www.lydsy.com/JudgeOnline/problem.php?id=3673 bzoj3674:https://www.lydsy.com/Jud ...
- Drainage Ditches(网络流(EK算法))
计算最大流,EK算法模板题. #include <stdio.h> #include <string.h> #include <queue> using names ...