复习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 ...
随机推荐
- [Windows]_[0基础]_[Release程序的崩溃报告minidump解决方式]
场景: 1. Release的程序崩溃时,崩溃报告能够让开发者查明代码哪里出了问题,用处大大的. 2. 仅仅实用VS的编译器才支持,所以MinGW就无缘了. 3. 使用了未处理异常过滤处理函数. 4. ...
- 如何运行开源的React Native项目?
如何运行开源的RN项目? 1.下载 2.解压 3.配置本地sdk位置 sdk.dir = D\:\\Android\\SDK 4.调整gradle版本 apply plugin: "com. ...
- 蓝桥杯--2011--购物券(dfs)
公司发了某商店的购物券1000元,限定只能购买店中的m种商品.每种商品的价格分别为m1,m2,-,要求程序列出所有的正好能消费完该购物券的不同购物方法. 程序输入: 第一行是一个整数m,代表可购 ...
- 【转】iPhone获取状态栏和导航栏尺寸(宽度和高度)
原文网址:http://blog.csdn.net/chadeltu/article/details/42708605 iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件 ...
- pull的时候报错
- 关于EasyUI datagrid editor combogrid搜索框的实现
首先需要datagrid editor对combogrid的扩展,这个是别人实现的: $.extend($.fn.datagrid.defaults.editors, { combogrid: { i ...
- 自学Python九 爬虫实战二(美图福利)
作为一个新世纪有思想有文化有道德时刻准备着的屌丝男青年,在现在这样一个社会中,心疼我大慢播抵制大百度的前提下,没事儿上上网逛逛YY看看斗鱼翻翻美女图片那是必不可少的,可是美图虽多翻页费劲!今天我们就搞 ...
- IBMWebsphere 使用jar包删除文件
1. 先使用ant打包一个jar包,删除其他不要的目录和文件,仅保留一个空的xxx.war文件夹("xxx"对应was上的工程安装根目录) 2. 在文件夹下新建一个META-INF ...
- sql--Truncate Table
Truncate Table(截断表) 有时候需要清除一个表中的所有资料.要达到者个目的,一种方式是DROP TABLE 指令.不过这样整个表格就消失,而无法再被用了. 另一种方式是Delete不带w ...
- angular js shopping
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...