黑马程序员————C语言基本语法(关键字、标识符、注释符、变量、Scanf函数)

第一讲 关键字

1、什么是关键字?

1) 关键字就是C语言提供的有特殊含义的符号,也叫做“保留字”

2) C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义

C语言关键字

auto局部变量(自动储存)

break 无条件退出程序最内层循环

case   switch 语句中选择项

char  单字节整型数据

const  定义不可更改的常量值

continue 中断本次循环,并转向下一次循环

default switch 语句中的默认选择项

do  用于构成do.....while循环语句

double定义双精度浮点型数据

else 构成if.....else选择程序结构

enum 枚举

extern 在其它程序模块中说明了全局变量

float 定义单精度浮点型数据

for 构成for循环语句

goto 构成goto转移结构

if 构成if....else选择结构

int 基本整型数据

long 长整型数据

register  CPU内部寄存的变量

return用于返回函数的返回值

short短整型数据

signed有符号数

sizoef计算表达式或数据类型的占用字节数  

static定义静态变量

struct定义结构类型数据

switch构成switch选择结构

typedef重新定义数据类型  

union联合类型数据

unsigned定义无符号数据

void定义无类型数据

volatile变量在程序中执行中可被隐含地改变

while用于构成do...whilewhile循环结构

2、关键字的特征

1) 关键字全部是小写
 
2) 在开发工具或者智能文本编辑工具中会显示其他颜色
 

第二讲  标识符

一、概述

1、什么是标识符

1)标识符就是在程序中自定义的一些符号和名称。要跟关键字区分开来:关键字是C语言默认提供的符号,标识符是程序员自定义的

2、标识符的作用

1) 标识符,从字面上理解就是用来标识某些东西的符号,标识的目的就是为了将这些东西区分开来
2)其实,标识符的作用就跟人类的名字差不多,为了区分每个人,就在每个人出生的时候起了个名字
3)C语言是由函数构成的,一个C程序中可能会有多个函数,为了区分这些函数,就给每一个函数都起了个名称。函数的名称就是标识符的一种。除了函数,以后还会学           到“变量”这个概念,变量的名称也是标识符

3、命名规则

1)命名规则(一定要遵守)

  • 只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_组成
  • 严格区分大小写,比如test和Test是2个不同的标识符
  • 不能以数字开头
  • 不可以使用关键字作为标识符
 2)命名规范(最好遵守)
  • 尽量起个有意义的名称,比如一个完整的英文单词,别人一看这个名称就能才能这个标识符的作用。如果不懂英文,你也可以用拼音,尽量不要起像abcde、sfsdfsdf等这类看起来没有意义的名称
  • 如果标识符中含有多个单词,可以使用驼峰标识(除开第一个单词,后面每个单词的首字母都是大写):firstName、myFirstName,或者使用下划线_来连接:first_name、my_first_name

4、常见的标识符命名错误

合法标识符        非法标识符           注释
fromNo12        from#12            标识符中不能使用#符号
my_Boolean     my-Boolean       标识符中不能使用“-”符号,应使用下划线“_”代替
Obj2               2ndObj              标识符不能使用数字开头
myInt              int                    “int”是内建关键字
jack_rose         jack&rose          符号“&”不能出现在标识符中
GUI                 G.U.I                 标识符内部不能出现“.”分隔符
 

第三讲  注释符

1、什么是注释

1)注释是在所有计算机语言中都非常重要的一个概念,从字面上看,就是注解、解释的意思

2)注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流。假如我写完一行代码后,加上相应的注释,那么别人看到这个注释就知道我的这行代码是做什么用的

3)注释可以是任何文字,也就是说可以写中文

4)在开发工具中注释一般是豆沙绿色

2、单行注释

1)单行注释以两个正斜杠开头,也就是以//开头,只能注释一行,从//开始到这行的结尾都是注释的内容

2)任何地方都可以写注释:函数外面、里面,每一条语句后面

3、多行注释

多行注释以/*开头,以*/结尾,/*和*/中间的内容都是注释


4、注释符的作用

1)被注释的代码不会参与编译

2)检查代码的作用

3)排除错误


5、注释符的嵌套现象

1)   单行注释可以嵌套单行注释、多行注释

1  int main ()
2 {    
3          // 哇哈哈 // 呵呵呵
4        // /* fsdfsdf */  // sdfsdfsd
5     printf("单行注释可以嵌套单行注释、多行注释") ; 
6     return 0 ;
7 }

2)  多行注释可以嵌套单行注释

 

1 int main ()
2 {
3     /*// 作者:MJ // 描述:第一个C语言程序作用:这是一个主函数,C程序的入口点*/
4     printf("多行注释可以嵌套单行注释") ; 
5     return 0 ;
6 }

 

3)  多行注释不能嵌套多行注释

1 int main ()
2 {    
3     /* 哈哈哈 /*嘻嘻嘻*/呵呵呵 */
4     printf("多行注释不能嵌套多行注释") ; 
5     return 0 ;
6 }

 

4)  下面的写法是错误的

1 int main()
2 {
3     // /*哈哈哈*/
4     printf("下面的写法是错误的") ; 
5     return 0;
6  }

 

6、注释符的重要性

  •   要养成写注释的良好习惯。绝大部分项目经理检查下属代码的第一件事就是看有没有写注释,也有很多公司的机试也会检查注释。
  •   今天,你写了几百行代码,很高兴,做出了一个非常不错的功能,但是,忘了写注释。一个星期过后,你再回去看那一段代码,你可能完全看不懂了,这是很正常的    事。如果你写了注释,那情况就不一样了,注释可以帮助你回顾代码的作用。
  • 你在某家公司待了1年多,写了10几万行代码,但是你不写一点注释。有一天你离职了,新的员工接手你做的项目,他首先要做的事情肯定是要读懂你写的代码。可是你一点注释都没写,10万行代码,全部都是英文,这会让这位新员工非常地蛋疼。每个人都有自己的思想,写代码的思路肯定是不一样的,看别人写的代码是件非常痛苦的事情,特别是没有注释的代码。你不写注释的做法会大大降低公司的开发效率。因此,所有的正规公司都非常重视注释。 

 

第四讲  数据、常量、变量

一、数据

1、什么是数据

生活中时时刻刻都在跟数据打交道,比如体重数据、血压数据、股价数据等。在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据、图片数据、视频数据,还有聊QQ时产生的文字数据、用迅雷下载的文件数据等。

2、数据的分类

计算机中存储的数据可以分为两种:静态数据和动态数据。

1)静态数据

  • 概念:静态数据是指一些永久性的数据,一般存储在硬盘中。硬盘的存储空间一般都比较大,现在普通计算机的硬盘都有500G左右,因此硬盘中可以存放一些比较大的文件。
  • 存储的时长:计算机关闭之后再开启,这些数据依旧还在,只要你不主动删掉或者硬盘没坏,这些数据永远都在。
  • 哪些是静态数据:静态数据一般是以文件的形式存储在硬盘上,比如文档、照片、视频等。

2)动态数据(临时数据)

  • 概念:动态数据指在程序运行过程中,动态产生的临时数据,一般存储在内存中。内存的存储空间一般都比较小,现在普通计算机的内存只有4G左右,因此要谨慎使用内存,不要占用太多的内存空间。
  • 存储的时长:计算机关闭之后,这些临时数据就会被清除。
  • 哪些是动态数据:当运行某个程序(软件)时,整个程序就会被加载到内存中,在程序运行过程中,会产生各种各样的临时数据,这些临时数据都是存储在内存中的。当程序停止运行或者计算机被强制关闭时,这个程序产生的所有临时数据都会被清除。

3、数据的大小

1) 不管是静态还是动态数据,都是0和1组成的。0和1如何组成这么多的数据?
2) 数据都有大小,静态数据就会占用硬盘的空间,动态数据就占用内存的空间
3) 数据越大,包含的0和1就越多,比特位和字节
4) 1 KB = 1024 B,1 MB = 1024 KB,1 GB = 1024 MB,1 TB = 1024 GB

4、C语言中的数据类型

 
 
 

 二、常量

1、什么是常量

常量,表示一些固定的数据

2、常量的分类

1)整型常量
      包括所有的整数,如6、27、109、256、-10、0、-289等
2)浮点型常量(float\double)
       浮点型常量分为double和float两种数据类型
  • double:双精度浮点型,其实就是小数。比如5.43、-2.3、0.0等(注意,0.0也算是个小数)
  • float:单精度浮点型,也是小数,比double的精确程度低,也就是说所能表示的小数位数比较少。为了跟double区分开来,float 型数据都是以f结尾的,比如5.43f、-2.3f、0.0f。需要注意的是,绝对不能有10f这样格式的,编译器会直接报错,只有小数才允许加上f。
3)字符常量(char)
  • 将一个数字(0~9)、英文字母(a~z、A~Z)或者其他符号(+、-、!、?等)用单引号括起来,这样构成的就是字符常量。比如'6'、'a'、'F'、'+'、'$'等
   注意:单引号只能括住1个字符,而且不能是中文字符,下面的写法是错误的:'abc'、'123456'、'男'
 
4)字符串常量
  • 将一个或者多个字符用双引号("")括起来,这样构成的就是字符串常量。比如"6"、"男"、"哇哈哈"、"abcd"、"my_car4",其实printf("Hello World");语句中的"Hello World"就是字符串常量。
 

三、 变量

1、什么是变量

当一个数据的值需要经常改变或者不确定时,就应该用变量来表示。

2、定义变量

1)目的
任何变量在使用之前,必须先进行定义。
定义变量的目的是:在内存中分配一块存储空间给变量,方便以后存储数据。
如果定义了多个变量,就会为这多个变量分别分配不同的存储空间。
2)格式

变量类型 变量名;

1 int main()
2 {
3      //在main函数中定义几个变量
4     int i;
5     char c;
6     int a, b;
7     return 0;    
8  }
  • 变量名属于标识符
  • 变量类型
  • 不同类型的变量占用不同大小的存储空间。内存极其有限,分配适当的存储空间
  • 约束变量所存放的数据类型(方便运算)

 

3、变量的使用

1) 赋值

  • 往变量里面存点东西,就是赋值。赋值语句后带个分号;

   1 i = 10; //把10赋值给i变量 

注意:这里的等号=,并不是数学中的“相等”,而是C语言中的赋值运算符,作用是将右边的常量10赋值给左边的变量i

  • 第一次赋值,可以称为“初始化”
  • 初始化的两种形式
  1. 先定义,后初始化:   int a; a = 10; 
  2. 定义的同时进行初始化:  int a = 10; 

2) 修改

  • 可以修改变量的值,多次赋值。每次赋值都会覆盖原来的值

 i = 10;i = 20; //变量i最后的值是20

  • 使用printf输出一个\多个变量的值

 int a = 10, c = 11; 2 printf("a=%d, c=%d", a, c); 

  • double\float\char的输出,格式符的一些小技巧
1     double height = 1.55;
2     char blood = 'A';
3     printf("height=%.2f, 血型是%c", height, blood);
4     // %d\%i是一个格式符(占位符),只能输出整数
5     // %f用来输出小数,默认是6位小数
6     //%c用来输出字符
  • 简单的加减操作

  int a = 10 + 20; 

  • 没有初始化时不要拿来使用(下面的写法是不建议的)

 1 int score; 2 printf("score=%d", score);//未赋值,会输出一些乱七八糟的数字 


3) 变量之间值的传递

  • 可以将一个变量的值赋值给另一个变量
1     int a = 10; //把10赋值给a
2 
3     int b = a; //把a 赋值给b
  • 连续赋值

 1 a = b = 10;//连续赋值 

4、常见的错误

1)变量名相同int a = 10;int a = 12;

2)变量的作用域不对

1 int main()
2 {
3     {
4        int a =100;
5     }
6     printf("a=%d",a);//变量a内存空间已经被释放,就会报变量a未声明错误    
7     return 0 ;
8 }

注意点:变量的作用域是从定义变量的那行代码开始,一直到所在的代码块结束。

 

 

第五讲  变量的内存分析、Scanf函数

一、变量的内存分析

1.      字节和地址

为了更好地理解变量在内存中的存储细节,先来认识一下内存中的“字节”和“地址”。

1)内存以“字节为单位”

0x表示的是十六进制

2)不同类型占用的字节是不一样的,数据越大,所需的字节数就越多

2.变量的存储

1) 所占用字节数跟类型有关,也跟编译器环境有关

2)变量实例

 1 int b = 10; 2 int a = 20; 

  • 内存由大到小寻址,优先分配内存地址较大的字节给变量。b的内存地址比a大
  • 每个变量都有地址:第一个字节的地址就是变量的地址

3)查看内存地址:

1 int a;
2 printf("a的地址是:%p\n", &a); 
3 //&a: 取得变量a的地址
4 //%p输出地址

 

3>   注意

一个变量一定先进行初始化,才能使用

1 int a;
2 printf("a的值是:%d\n", a);
3 //上面的写法是不建议的,输出的是一些乱七八糟的数字

 

二、Scanf函数

1.      简介

这也是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量

2.      简单用法

 1 int age; 2 scanf("%d", &age); //先定义一个变量来存放要输入的值  

  • scanf函数时,会等待用户的键盘输入,并不会往后执行代码。scanf的第1个参数是"%d",说明要求用户以10进制的形式输入一个整数。这里要注意,scanf的第2个参数传递的不是age变量,而是age变量的地址&age,&是C语言中的一个地址运算符,可以用来获取变量的地址
  • 输入完毕后,敲一下回车键,目的是告诉scanf函数我们已经输入完毕了,scanf函数会将输入的值赋值给age变量

3.      其他用法

1)用scanf函数接收3个数值,每个数值之间用中划线-隔开

 scanf("%d-%d-%d", &a, &b, &c); 

3个%d之间是用中划线-隔开的,因此我们在每输入一个整数后都必须加个中划线-,比如这样输入,不然在给变量赋值的时候会出问题

  • 注意:数值之间的分隔符是任意的,不一定要用中划线-,可以是逗号、空格、星号*、井号#等等,甚至是英文字母

//逗号分隔

 1 scanf("%d,%d,%d", &a, &b, &c); // 输入格式:10,14,20  

// 井号分隔

scanf("%d#%d#%d", &a, &b, &c); // 输入格式:10#14#20 

// 字母分隔

 1 scanf("%dx%dx%d", &a, &b, &c); // 输入格式:10x14x20 

2) 用scanf函数接收3个数值,每个数值之间用空格隔开

 1 scanf("%d %d %d", &a, &b, &c); 

3个%d之间是用空格隔开的,我们在每输入一个整数后必须输入一个分隔符,分隔符可以是空格、tab、回车

4.  注意

scanf的第一个参数中不要包含\n,比如scanf(“%d\n”, &a); 这将导致scanf函数无法结束

 

 

 

 

posted @ 2015-05-04 23:18  英雄出少年  阅读(1365)  评论(0编辑  收藏  举报