下面我会添加一些书上的代码和练习的代码。
学习的语言:C
编译环境:visual Studio 2013
选择的书籍:C Primer Plus(作者:Stephen Prata)
------------------------------------------第2篇--------------------------------------------------------------------------
一、C的基础概念
学习C:有几个比较重要的概念 函数 返回值 参数 类型 变量 语句
#include <stdio.h> //引入函数库
int main(void) //一个简单的C程序
{
int x=0; //定义一个名为x的变量
printf("Hello,World!");//使用printf()函数
printf("my favorite number is %d."x);
getchar();
return 0;//返回一个空值给main函数
}
C程序的工作模式:和工作原理相同,自上而下的方式,我们已经知道,计算机是一条指令一条指令执行下去的,C程序也是如此。
下面我将一行行解释上述代码,这也是C编译器内部干的事;
#include:预处理命令,字面意思就是先处理的命令。命令是什么?就是后面接着的头文件(以<文件名>.h结尾的文件)。
stdio.h:这就是头文件。一些基本的函数实现,例如printf()getchar()scanf()函数等等都包含在头文件里面。在一个程序的开始,我们需要一些基本的函数支持,这样我们才能完成一些比较基本的操作。没错!就是说以前的开拓者连这些基本的操作都要用很复杂的方法来完成,而我们现在所拥有的效率,只是站在那些巨人的肩膀之上罢了。这是一种拷贝粘贴作用的东西。当程序运行到printf时,马上调用头文件里面的print()函数;
int main(void): main()总是第一个被调用的函数 。这同时也是一个语句 返回值类型 + 函数名 +(传入的参数)。
void:表示空,也就是不带任何参数
注释:“//”或“/* 注释内容 */”增加程序的可读性
花括号:“{”表示一个函数体的开始 相对的 “}”表示一个函数体的结束
int x:表示声明一个整形变量。即使用一个名为x的变量,而且x是int(整数)类型。这种声明提供了两个准确的信息,一就是变量的名字,二就是变量要分配的储存空间的大小。关键字和标识符,关键字就是C提供的特殊的名字,如int;标识符就是自己为一些东西取得名字。
语句:x=0; 赋值语句
函数:语句 function ();函数是C程序的构造块
printf()函数:我学习的第一个函数 printf(),作用是在屏幕上打印字符串(就是双引号里面的内容)。你可以在里面添加任何你想显示的内容,包括中英文、数字。特别要注意的是变量的打印,他需要在字符串里头加入占位符%d。%提醒计算机打印一个变量,d表示这个变量是十进制数字。括号内部的东西称之为(实际参数)。参数也有两种一种是实际参数,还有一种是形式参数。
getchar()函数: 字面意思是,得到一个字符的函数。作用是等待你输入一个字符。
编译:编译上述代码之后会出现一个源文件和一个可执行文件,也就是<文件名>.c <文件名>.exe。
二、函数的调用:掌握了上面的一些关键(main函数开始,函数返回值和参数等等),我们就可以理解函数的调用了。
#include "stdio.h"
void my_printf(int x);//函数原形(prototype)
int main(void)//练习函数的调用
{
my_printf(1);//调用函数(function call)
getchar();
return 0;
}
void my_printf(int x)//函数定义(function definition)
{
printf("调用成功%d",x);
}
函数调用三部曲: 原形 调用 定义
三、调试程序:程序的错误叫BUG 找出并修正错误的过程叫debug(调试)
程序的错误分为两种:一种是语法错误,另一种是语义错误。
语法错误:编译器会自动报错,会告诉你错误的性质和具体位置。如下
#include <stdio.h>
int main(void)
{
int x0,int x1,int x2;
return 0;
}
这里的问题是声明变量格式有误,可以这么改
#include <stdio.h>
int main(void)
{
int x0,x1,x2;
return 0;
}
语义错误就不说了,语文老师的课室在出门右拐第三间。
四、练习
函数调用:
#include "stdafx.h"
void one_tree(void);
void two(void);
int _tmain(int argc, _TCHAR* argv[])//练习函数的调用
{
printf_s("staring now:\n");
one_tree();
printf_s("done!");
getchar();
return 0;
}
void one_tree(void)
{
printf_s("one\n");
two();
printf_s("tree\n");
}
void two(void)
{
printf_s("two\n");
}
printf函数的使用:
int _tmain(int argc, _TCHAR* argv[])//把我的年龄转换成天数
{
int a=0, b=0;
printf("请输入你的年龄:");
scanf_s("%d",&a);
b = 365 * a;
printf_s("你的年龄是%d,你已经来到这个世界上%d天了!", a, b);
fflush(stdin);
getchar();
return 0;
}