一、初识C语言
1.1 面向程序员的语言
1.2 C语言程序的格式
#include<stdio.h>
int main(void)
{
/*我的第一个C程序*/
printf("Hello,World!\n");
return 0;
}
//Hello,World!
1.3 复习题
1.对编程而言,可移植性意味着什么?
完美的可移植程序是,其源代码无需修改就能在不同计算机系统中成功编译的程序。
2.解释源代码文件、目标代码文件和可执行文件有什么区别?
源代码文件包含程序员使用的任何编程语言编写的代码。目标代码文件包含机器语言代码,它不必是完整的程序代码。可执行文件包含组成可执行程序的完整机器语言代码。
3.程序的7个主要步骤是什么?
(1)定义程序目标;(2)设计程序;(3)编写程序;(4)编译程序;(5)运行程序;(6)测试和调试程序;(7)维护和修改程序。
4.编译器的任务是什么?
编译器把源代码(如,用C语言编写的代码)翻译成等价的机器语言代码(也叫作目标代码)。
5.链接器的任务是什么?
链接器把编译器翻译好的源代码以及库代码和启动代码组合起来,生成一个可执行程序。
二、C语言概述
1.简单的C语言程序实例
//first.c程序
/* #include--预处理器指令*/
#include<stdio.h>
/* main()总是第一个被调用的函数*/ /*下面的语句组成函数的语句
int main(void) /*一个简单的C语言程序*/
{
int num; /*定义一个名为num的变量*/
num = 1; /*为num赋一个值*/
printf("I am a simple "); /*使用printf()函数*/
printf("computer.\n");
printf("My favorite number is %d because it is first.\n",num);
return 0;
}
//I am a simple computer.
//My favorite number is 1 because it is first.
2.程序细节
2.1 #include指令和头文件
#include<stdio.h>
头文件包含了编译器创建最终可执行程序要用到的信息。
2.2 main()函数
int main(void)
main()函数必须是开始的函数,()用于识别main()是一个函数。
int是main()函数的返回类型。表明main()函数返回的值是整数。返回到哪里?返回给操作系统
通常,函数名后面的圆括号中包含一些传入函数的信息。该例中没有传递任何信息。因此,圆括号内是单词void
2.3 注释
/*这是一条C注释*/
/* 分开了
也是哦*/
/*
这样也可以
*/
//还能这样
2.4 花括号
{
...
}
一般而言,所有的C函数都使用花括号标记函数体的开始和结束
花括号还可用于把函数中的多条语句合并为一个单元或块。在C语言中的作用类似与一些语言的begin和end。
2.5 声明
int num;
在该例中,声明完成了两件事。其一,在函数中有一个名为num的变量。其二,int表明num是一个整数。int是一种数据类型。
int是C语言的一个关键字,不能用作其他用途。例:不能用int作为函数名和变量名。
示例中的num是一个标识符,也就是变量、函数或其他实体的名称。因此,声明把特定标识符与计算机内存中的特定位置联系起来,同时也确定了存储在某位置的信息类型或数据类型
在C语言中,所有变量都必须先声明才能使用。
int main() //旧规则中要求变量声明在块的顶部,其他语句不能在任何声明的前面
{
int doors;
int dogs;
doors = 5;
dogs = 3;
//其他语句
}
C99和C11遵循C++的惯例,可以把声明放在块中的任何位置。
int main() //目前的C规则
//一些语句
int doors;
doors = 5; //第一次使用doors
//其他语句
int dogs;
dogs = 3; //第一次使用dogs
//其他语句
声明变量的4个理由
■把所有变量方在一处,方便读者查找和理解程序的用途。
■声明会促进你在编写程序之前做一些计划。
■声明变量有助于发现隐藏在程序中的小错误,如变量名拼写错误。
■如果事先未声明变量,C程序将无法通过编译。
2.6 赋值
num = 1;
2.7 printf()函数
printf("I am a simple "); //f 代表格式化打印
printf("computer.\n");
printf("My favorite number is %d because it is first.\n",num); // %d占位符 \n换行
2.8 return语句
return 0;
不要在有返回值的函数中漏掉它。建议养成在main()函数中保留return语句的好习惯。但对于某些操作系统(包括Linux和UNIX),return语句有实际的用途。
3. 简单程序的结构
程序由一个或多个函数组成,必须有main()函数。
函数由于函数头和函数体组成。
函数头包括函数名、传入函数的信息类型和函数的发牛类型。
函数体被花括号括起来。
简而言之,一个简单的C程序的格式如下:
#include<stido.h>
int main(void)
{
语句
return 0;
}
(大部分语句都以分号结尾.)
4. 提高程序可读性
5. 进一步使用C
// fathm_ft.c -- 把2英寻转换成英尺
#include<stdio.h>
int main(void)
{
int feet,fathoms;
fathoms = 2;
feet = 6 * fathoms;
printf("There are %d feet in %d fathoms!\n",feet, fathoms);
printf("Yes, I said %d feet !\n",6 * fathoms);
return 0;
}
//There are 12 feet in 2 fathoms!
//Yes, I said 12 feet !
6. 多个函数
/* two_fun.c -- 一个文件中包含两个函数*/
#include<stdio.h>
void butler(void); /*ANSI/ISO C函数原型*/
int main(void)
{
printf("I will summon the buttler function.\n");
butler();
printf("Yess.Bring me some tea and writeable DVDs.\n");
return 0;
}
void butler(void) /*函数定义开始*/
{
printf("You rang, sir?\n");
}
//I will summon the buttler function.
//You rang, sir?
//Yess.Bring me some tea and writeable DVDs.