C语言零基础入门(二 基本概念)
大家继续学起来吧!
2. C语言基本概念
2.1 简单的C语言程序
首先写一个所有编程语言都会用到的第一个经典例子——输出“Hello,world”。
一般我们习惯用 Visual Studio (简称VS) 编写C语言。
Visual Studio的下载安装教程可参考下面链接(转自博主:机器视觉001):
https://blog.csdn.net/liubing8609/article/details/82695402
【例】编写一个C语言程序,输出“Hello,world”。
#include<stdio.h>
void main(void)
{
printf("Hello,world\n");
}
程序中的main是一个特殊的函数名,称为主函数。花括号及其中的内容是main()的函数体,可以由若干条语句组成,每个语句的最后有一个分号,表示一个语句结束。一个C语言程序由若干个函数组成,其中必须有唯一的main()函数。C语言程序从main()函数开始运行,main()函数中的最后一个语句执行完毕后,C语言程序的运行也就结束了。
printf()函数是C语言的标准库函数,该函数原型在标准库函数的头文件<stdio.h>中定义,所以需要使用 #include 命令加以包含。该函数将字符串 “Hello,world\n” 输出到标准输出设备(屏幕)上。字符串中的 “\n” 代表换行符。
【例】编写程序,输出两个整数中的最大值。
#include <stdio.h>
/* 定义函数,求两个整数中的较大者 */
int max(int x, int y)
{
int z; //定义变量
if(x > y){
z = x; //将x和y中的较大者赋值给z
}
else {
z = y;
}
return z; //返回z的值
}
void main(void)
{
int a, b, c; //定义变量
printf("a, b = "); //输出提示变量
scanf("%d, %d", &a, &b); //输入两个整数
c = max(a, b); //调用函数
printf("max = %d\n", c); //输出结果
}
上述程序编译并运行,输入“10,20”,运行结果为:20。截图如下:
程序中的 /* */ 和 // 均为注释,其中,/* */ 即可作为行注释,也可用于块注释,而 // 只能作为行注释。注释内容用于帮助阅读理解程序,其作用是提高程序的可读性,但没有实际的逻辑意义,不生成目标指令。程序中的注释可用来注明程序或语句的功能,也可用来注释函数的功能、变量用途及程序段的功能等。
程序中定义的max() 函数的功能是求两个整数的最大值,其中x和y是max() 的形参。
函数scanf() 是C语言标准库函数,用于从标准输入设备(键盘)输入数据给指定的变量。语句scanf("%d, %d", &a, &b); 用来输入两个整数给变量a和b,变量前面的运算符&是取地址运算符,&a和&b分别是变量a和b的地址,要想输入数据给变量a和b,必须将a和b的地址传递给scanf() 函数。需要注意的是,函数scanf() 的输入格式实参“%d,%d”中含有逗号(,),实际输入数据时也需要输入逗号。
主函数main() 中,语句c = max(a, b); 的含义是,用a和b作为实参,调用函数max(),得到max() 的返回值赋值给c,即a和b的最大值赋给c。
2.2 关键字和标识符
2.2.1 字符集
C语言字符集包括以下内容:
(1)字母:大写字母A~Z,小写字母a~z。
(2)数字:0~9。
(3)下划线:_ 。
(4)标点符号:,(逗号)、;(分号)、“ ”(双引号)、‘’(单引号)。
(5)特殊字符:+、-、*、/、%、=、()、[]、{}、>、<、!、\、|、Tab、空格符等。
2.2.2 关键字
关键字又称为保留字,是语言中被赋予特定含义的单词符号。
auto | do | goto | signed | unsigned |
break | double | if | sizeof | void |
case | else | int | static | volatile |
char | enum | long | struct | while |
const | extern | register | switch | |
continue | float | return | typedef | |
default | for | short | union |
2.2.3 标识符
C语言程序中,通常需要对函数、变量、符号常量、数据类型和数组等进行命名,这些名称统称为标识符。需要注意,C语言中大小写字符是有区别的。
标识符是符合以下语法规则的字符序列:
- 首字符必须是字母或下划线
- 只能包含字符A~Z、a~z、0~9及_(下划线)
- 标识符不能是关键字
- 标识符不能跨行书写
例如,以下这些字符序列是合法的C语言标识符:
abc ABC Abc buffer _abc filename
而以下这些字符序列则不是合法的C语言标识符:
+abc $xyz 2apple %cat
使用标识符命名程序中各种对象时,要尽量做到“见名知意”,这样有利于提高程序可读性,比如,用day表日期,sum表示和等。
2.3 数据类型
C语言主要的数据类型有4类,分别是基本类型、构造类型、指针类型、空类型(void)。
基本类型包括:整型、浮点型、字符型、枚举型。数值类型是整型和浮点型的总称。C语言的字符型比较特殊,也可以作为数值类型,成为算术运算的对象。
数据类型分类 | 关键字 | 示例 | ||
---|---|---|---|---|
基 本 类 型 |
整数类型 | 整型 | int | int a; |
短整型 | short int(short) | short int a; | ||
长整型 | long int (long) | long int a; | ||
无符号整型 | unsigned |
unsigned a; unsigned int b; unsigned short c; unsigned long d; |
||
浮点类型 | 单精度浮点型 | float | float a; | |
双精度浮点型 | double |
double a; |
||
长双精度浮点型 | long double | long double a; | ||
字符型 | char | char a; | ||
枚举类型 | enum(int) | enum boolean{true,false}; | ||
构 造 类 型 |
数组 |
int point[100]; char name[256]; |
||
结构体 | struct |
struct date{ int year; int month; int day; } |
||
共用体 | union |
union{ int length; char name[256]; double value; } |
||
指针类型 |
int *point; char *pstring; |
|||
空类型 | void |
void *p; void main(void){} |
2.3.1 整数类型
类型 | 存储 | 表示范围 |
---|---|---|
short int | 2字节 | -32768 ~ 32767(- ~ -1) |
unsigned short int | 2字节 | 0 ~ 65535(0 ~ -1) |
int | 2字节 | -32768 ~ 32767(- ~ -1) |
unsigned int | 2字节 | 0 ~ 65535(0 ~ -1) |
long int | 4字节 | -2147483648 ~ 2147483647(- ~ -1) |
unsigned long int | 4字节 | 0 ~ 4294967295(0~ -1) |
应注意,整型之间进行算术运算,结果还是整数。如,程序段:
int a = 123, b = 10, c;
c = a / b;
运行后,变量c的值为12,小数被舍去。
2.3.2 浮点类型
C语言用浮点类型来表示人们概念中的实数(含有小数),也可以说C语言使用浮点数来表示和处理实数。
类型 | 存储 | 表示范围 | 精度(有效位数) |
---|---|---|---|
float | 4字节 | ±3.4 ~ 3.4 | 7位数字 |
double | 8字节 | ±1.7 ~ 1.7 | 16位数字 |
long double | 10字节 | ±3.4 ~ 3.4 | 19位数字 |
2.3.3 字符类型
类型 | 存储 | 表示范围 |
---|---|---|
char | 1字节 | -128 ~ 127(-) |
unsigned char | 1字节 | 0 ~ 255(0 ~ - 1) |
字符常量用单引号括起来,如 ‘A’、‘I’ 和 ‘$’ 等是字符常量。为了使程序可以处理字符集中的每一个字符,C语言提供了一种特殊的表示法——转义序列,通常称为转义符。
转义符 | 描述 | 转义符 | 描述 |
---|---|---|---|
‘\a’ | 警报符 | ‘\\’ | 反斜杠 |
‘\b’ | 退格 | ‘\?’ | 问号 |
‘\f’ | 走纸换页 | ‘\'’ | 单引号 |
‘\n’ |
换行 | ‘\"’ | 双引号 |
‘\r’ | 回车 | ‘\0’ | 空字符 |
‘\t’ | 横向制表符 | ‘\ddd’ | 八进制转义符 |
‘\v’ | 垂直制表符 | ‘\xhh’ | 十六进制转义符 |
未完待续...... 大家有什么问题或者补充敬请留言呦!