黑马程序员——C语言——基础语法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


1. C语言程序

C语言的源程序是.c文件

C语言程序的构成:

  • 由函数构成,每个函数实现了一个或多个功能
  • 在程序中,只有一个主函数(主函数被系统调用)
  • 函数只有被调用的时候才执行
  • 如果没有主函数,程序无法运行
源文件(.c)—编译—>目标文件(.o)—链接—>可执行文件(.out)


2. C语言有32个关键字

数据类型关键字

A:基本数据类型关键字:void int char float double

B:类型修饰符关键字:short long signed unsigned

C:复杂类型关键字:struct union enum typedef sizeof

D:存储类型关键字:auto static register extern const volatile

流程控制关键字

A:跳转结构:return break continue goto(一般不用)

B:分支结构:if else switch case default

D:循环结构:do while for


3. 标示符

命名规则:

  • 只能由字母、数字、下划线或$符号构成
  • 不能由数字开头
  • 不能和关键字重名
  • 区分大小写
4. C语言注释

单行注释  //

多行注释  /*        */

注释使用注意:

单行注释可以嵌套多行注释,但必须在同一行(无意义)

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

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


5. C语言中数据类型

a. 基本数据类型

整型:短整型(short) 长整型(long) 整型(int)

字符型 (char)

实型:单精度型(float)  双精度型(double)

b. 构造类型

数组、结构体(struct)、共用型(union)、枚举类型(enum)

c.指针类型

d.空类型

e.定义类型 (typedef)


6. 数据类型的内存占用

在64位机器下:

char  1个字节     int  4个字节      float  4个字节    double  8个字节      short   2个字节      long  8个字节       long long 8个字节      void*  8个字节


7. 不同数据类型的常量表达式

a.整型常量:

10进制

8进制    以0开头   eg:045

2进制    以0b开头    eg:0b1000111101

16进制   以0x开头   eg: 0x001FFA801B

b. 实型常量

单精度常量   以f结尾   eg:2.3f

双精度常量   默认是双精度常量  eg: 2.3

c. 字符型常量

字符型常量   用单引号括起来的字符    eg: 'a'

d. 字符串常量

字符串常量  用双引号括起来,可以使字符、数字、符号     eg: "abc"      "gshf&"


8. 变量

变量的两要素:变量类型     变量名

变量分类:全局变量    局部变量


变量的初始化

定义的同时初始化: int a = 10;

先定义变量后初始化: int b;    b = 2;

使用变量给变量初始化: int c=b;  //用b的值给c初始化

给变量连续初始化:int d, e, f;    d=e=f=100;


变量的作用域:

局部变量(内部变量):在函数内或代码块内部定义的变量,作用域仅限函数内部或代码块内。

全局变量: 在函数外部定义的变量,从定义的位置开始,到文件末尾结束,在同一文件的不同函数中都可以使用。

注意:在代码块内部可以定义和外部同名的变量,块内部会暂时屏蔽块外部同名的变量。


变量为什么区分类型?

为了更合理的分配内存,不同数据类型需要的存储空间可能不同

数据的存储格式不一样,比如 int 4个字节,float 4个字节

不同数据类型的运算方式可能不同


9. printf函数

调用格式:printf("格式控制字符串",输出列表);


格式控制符说明:

%d: 输出有符号10进制整数,正数符号不输出

%c:输出一个字符

%f:输出一个实数(包括单精度、双精度、长双精度),以小数形式输出。实数部分全部输出,float型小数部分输出6位

%s:输出字符串


%m.n: 指定数据宽度和小数位数     eg:%7.2f   输出数据占7列(小数点占1列),包括两位小数

%.n: 指定小数位n位

%0:以8进制形式输出

%:x:以16进制形式输出

%p:输出变量地址


%f输出精度问题:

%f输出数据时,float类型精度是小数点后6位,有效数字是7位

%f输出数据时,double类型精度是小数点后6位,有效数字是15位


printf函数使用注意事项:

域宽问题

%md: m是数字,可以为正也可以为负,如果要输出的数大于域宽m,按实际位数输出;小于m按实际位数输出。

%0md:位数小于域宽时,补0


10. scanf函数(阻塞式函数)

调用格式: scanf("格式控制符",输入项地址列表);

阻塞式函数执行后会等待用户一直输入,如果用户不输入任何内容,它会一直等待。


scanf函数使用注意事项:

接收单个变量时在输入值之前,输入的空格,回车、tab都会被忽略.

scanf函数在遇到回车时会结束执行

输入数值时,在两个数值之间需要插入空格或回车隔开,输入完第一个数,输入空格、回车。tab都会被忽略

‘*’的使用,%*d,跳过一个整数,%*c,跳过一个字符


scanf运行原理:

当用户输入内容后,这些内容会被存到scanf的输入缓冲区中,格式控制符会根据格式控制字符的要求,从输入缓冲区依次取出相应内容存到变量中,如果格式不一致,不给变量赋值。如果缓冲区还有内容,不会提示我们再输入。


解决混合型输入问题的方法:

a. 如果整型和字符型混合,加上','

eg: scanf("%d,%c,%d",&a,&ch,&b);

b. 每个变量写依次scanf时,我们要每次回车依次时

scanf("%d",&a);

scanf("%c",&ch);   //吸收回车字符

scanf("%d",&ch);

scanf("%d",&b);







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值