文档章节

C和指针---第二章:基本概念

fzyz_sb
 fzyz_sb
发布于 2013/09/12 20:17
字数 568
阅读 80
收藏 1

2.1 环境

ANSI C的实现中,存在两种不同的环境:1是翻译环境,2是执行环境。

2.1.1 翻译

翻译分几个步骤组成。组成一个程序的每个源文件通过编译过程分别转换为目标代码,各目标文件由链接器捆绑在一起,形成单一而又可执行的文件。链接器也会引用C标准库或个人程序库中需要的文件。

编译过程首先是预处理器处理,然后源代码经过解析后,产生目标代码。

2.1.2 执行

1. 程序必须载入到内存中

2. 启动程序和程序链接起来。

3. 程序在一个堆栈中执行

4. 程序停止


2.2 词法规则

一个ANSI C程序由声明和函数组成。函数定义了需要执行的工作,而声明则描述了函数和函数将要操作的数据类型(有时是数据本身)。注释可以分布在源文件的各个地方。

2.3 程序风格

1. 空行用于分隔不同的逻辑代码段,它们是按照功能分段的。

2. if和相关语句的括号是这些语句的一部分,而不是它们所测试的表达式的一部分,所以在括号和表达式之间留下一个空格,是表达式看上去更突出一些。

3. 在绝大多数操作符的使用中,中间都是隔以空格。

4. 嵌套的语句要注意缩进,用tab键。

5. 注释要成块出现

6. 在函数定义中,返回类型出现于独立的一行中,而函数的名字则在下一行的起始处。

习题:

1.养成习惯,声明放在.h中,定义放在.c中:

negate.h:

int negate(int number);
negate.c:
#include "negate.h"
int negate(int number){
	return -number;
}
increment.h:
int increment(int number);
increment.c:
#include "increment.h"
int increment(int number){
	return number + 1;
}
main.c:
#include <stdio.h>
#include "increment.h"
#include "negate.h"

main()
{
	printf("%d:", increment(10));
	printf("%d:", increment(0));
	printf("%d\n", increment(-10));
	printf("%d:", negate(10));
	printf("%d:", negate(0));
	printf("%d\n", negate(-10));
}
程序输入输出:

2. 

#include <stdio.h>
#include <stdlib.h>

main()
{
	int		c;
	int		isRight = 0;
	while ((c = getchar()) != EOF){
		if (('{' == c) || ('}' == c)){
			isRight++;
		}
	}
	if (isRight % 2 == 0){
		printf("right");
	}
	else{
		printf("error");
	}
}

程序输入输出:


© 著作权归作者所有

共有 人打赏支持
fzyz_sb
粉丝 408
博文 209
码字总数 447144
作品 0
武汉
程序员
SSL 与数字证书 - 第二章 - 信息安全的基本概念

目录 第一章 为什么网络是不安全的? 第二章 信息安全的基本概念 第一节 安全的定义 第二节 认证与授权 第三章 加密与算法 第一节 散列(HASH) 第二节 对称加密(SYMMETRIC CRYPTOGRAPHY) ...

虫虫
2012/03/01
0
3
HTTPS 从原理到实战 - 附送 OSChina HTTPS 配置

鉴于最近 OSChina 强制启用 HTTPS 登陆一事,备受关注,我花了点时间,贴出了N久以前写的关于安全性的文章,并又花了点时间把如何申请证书,如何配置Tomcat/Nginx一并解释了一遍,希望对各位...

虫虫
2012/03/01
14.5K
45
SSL 与数字证书 - 结束语

目录 第一章 为什么网络是不安全的? 第二章 信息安全的基本概念 第一节 安全的定义 第二节 认证与授权 第三章 加密与算法 第一节 散列(HASH) 第二节 对称加密(SYMMETRIC CRYPTOGRAPHY) ...

虫虫
2012/03/01
0
6
Oracle数据库学习的福利来啦——最佳入门经验分享

适用人群:从事数据库技术实施或售后工程师,准备参加OCA,OCP认证考试 通过学习对Oracle数据库的相关基础知识进行梳理,最终共同提炼出必须最先掌握的那部分知识,无论你是数据库开发、管理、...

让往事随风
2016/04/13
34
0
《VC++技术内幕》读后感

看的是第四版的电子书,毕竟又厚又贵,买书不划算,而且这版翻译的也很好,记录下我的一点读书心得。 第一章:对windows的消息处理模式,GDI,DLL等有个基本了解,价值不大,算入门级别吧。 ...

嗯哼9925
2017/12/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
10分钟前
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
11分钟前
0
0
Nginix开启SSL支持HTTPS访问(自签名方法)

Nginix开启SSL支持HTTPS访问(自签名方法) 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器...

openthings
28分钟前
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部