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。截图如下:

C语言零基础入门(二 基本概念)

程序中的 /*   */ 和 // 均为注释,其中,/*   */ 即可作为行注释,也可用于块注释,而 // 只能作为行注释。注释内容用于帮助阅读理解程序,其作用是提高程序的可读性,但没有实际的逻辑意义,不生成目标指令。程序中的注释可用来注明程序或语句的功能,也可用来注释函数的功能、变量用途及程序段的功能等。

程序中定义的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 关键字

关键字又称为保留字,是语言中被赋予特定含义的单词符号。

表2-1 ANSI C定义的关键字
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语言的字符型比较特殊,也可以作为数值类型,成为算术运算的对象。

表2-2 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 整数类型

表2-3 64位机整数类型
                   类型 存储                                          表示范围
short int 2字节 -32768 ~ 32767(-C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念) ~ C语言零基础入门(二 基本概念)-1)
unsigned short int 2字节 0 ~ 65535(0 ~ C语言零基础入门(二 基本概念)-1)
int 2字节 -32768 ~ 32767(-C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念) ~ C语言零基础入门(二 基本概念)-1)
unsigned int 2字节 0 ~ 65535(0 ~ C语言零基础入门(二 基本概念)-1)
long int 4字节 -2147483648 ~ 2147483647(- C语言零基础入门(二 基本概念)~ C语言零基础入门(二 基本概念)-1)
unsigned long int 4字节 0 ~ 4294967295(0~ C语言零基础入门(二 基本概念)-1)

应注意,整型之间进行算术运算,结果还是整数。如,程序段:

int a = 123, b = 10, c;
c = a / b;

运行后,变量c的值为12,小数被舍去。

2.3.2 浮点类型

C语言用浮点类型来表示人们概念中的实数(含有小数),也可以说C语言使用浮点数来表示和处理实数。

表2-4 浮点类型
           类型     存储                           表示范围 精度(有效位数)
float 4字节 ±3.4C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念) ~ 3.4C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念) 7位数字
double 8字节 ±1.7C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念) ~ 1.7C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念) 16位数字
long double 10字节 ±3.4C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念) ~ 3.4C语言零基础入门(二 基本概念)C语言零基础入门(二 基本概念) 19位数字

2.3.3 字符类型

表2-5 字符类型
类型 存储 表示范围
char 1字节 -128 ~ 127(-C语言零基础入门(二 基本概念)
unsigned char 1字节 0 ~ 255(0 ~ C语言零基础入门(二 基本概念) - 1)

字符常量用单引号括起来,如 ‘A’、‘I’ 和 ‘$’ 等是字符常量。为了使程序可以处理字符集中的每一个字符,C语言提供了一种特殊的表示法——转义序列,通常称为转义符。

表2-6 C语言转义符
转义符 描述 转义符 描述
‘\a’ 警报符 ‘\\’ 反斜杠
‘\b’ 退格 ‘\?’ 问号
‘\f’ 走纸换页 ‘\'’ 单引号

‘\n’

换行 ‘\"’ 双引号
‘\r’ 回车 ‘\0’ 空字符
‘\t’ 横向制表符 ‘\ddd’ 八进制转义符
‘\v’ 垂直制表符 ‘\xhh’ 十六进制转义符

未完待续......  大家有什么问题或者补充敬请留言呦!