C语言学习 一.初窥门径

1.C语言是什么

    C语言是一门编译型计算机语言,人们通过使用计算机语言,对计算机进行相关的指令,让其进行工作,

2.编译与链接

    因为计算机仅能识别二进制指令,而C语言源代码属于文本文件,文本文件本身无法执行,所以需要编译器进行翻译及链接器的链接, 生成二进制可执行文件,才可运行。

    C语言是存放在源文件(以.c为后缀)中经过编译器处理生成对应的目标文件(以.obj为后缀),后多个目标文件和库文件经过链接器处理生成对应的可执行程序(以.exe为后缀)。

    C语言中以.h为后缀的文件称为头文件。

3.main函数

    C语言程序无论多少都从main函数开始,main函数是程序的入口,main函数也称为:主函数。main函数前面表示函数执行结束时返回一个相对应类型的值。

这里main函数前面的int表示返回值是一个整型 ,所以return 0;返回值为整型

int main()
{
  return 0;
}

 注意:

  • main函数是程序的入口
  • main函数有且仅有一个
  • 即使一个项目中有多个.c的源文件,但是也仅有一个main函数

      main函数后的()中也可以有:

  1. oid,表示返回为空,void也可不写 
  2. 参数(当需要使用到该函数中的参数是才加入参数)
int main(int a,int b){}

4.printf函数及库函数

    printf是一个库函数,功能是在标准输出设备(例如屏幕)上进行信息打印。可用来打印各种类型的数据 ,例如:

printf("%d\n",a);//打印整型
printf("%s\n",a);//打印字符串
printf("%c\n",a);//打印字符
printf("%f\n",a);//打印浮点数

 其中%d,%c等是占位符,会被后面的值替换。

    我们在使用库函数时,是需要包含头文件的,比如printf函数需要包含stdio.h这个头文件。

#include <stdio.h>

    库函数 是为了提高程序员编程效率产生的。C语言标准规定一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用。这些函数组成了一个函数库,被称为标准库。

    一个系列的库函数一般会声明在同一个头文件中,所以库函数的使用,要包含对应的头文件。

5.关键字

    C语言中有一些保留名字的符号,例如:int、if、return,这些符号被称为保留字或者关键字。    

  • 关键字都具有特殊的意义,是保留给C语言使用的
  • 程序员在创建标识符时不能与关键字重复
  • 关键字也不能自己创建

    C语言的32个关键字如下

6.字符和ASCII编码

     在键盘上可以敲出各种字符,例如:a,q,@,#等,都称为字符,C语言中字符是用单引号括起来的,例如:'a','@'。

    我们都知道计算机中所有的数据均是二进制的形式存储的,每个人自己对每个字符编一个二进制序列,称为编码,但为了方便大家相互通信,美国国家标准学会出台了标准ASCLL编码,C语言中的字符就遵循了ASCII编码的方式。其中十进制(dec),八进制(oct),十六进制(hex)及字符(ch)编码。

并不需要记住所有的数字,但最好可以掌握几组特殊的数据例如:

  • 字符A~Z的ASCII码值从65~90
  • 字符a~z的ASCII码值从97~122,与大写相差32
  • 数字字符0~9的ASCII码从48~57
  • 换行符 \n 的ASCII码为:10 
  • 从0~31的这32个字符都是不可打印字符,无法在屏幕上观察。

    单个字符的打印可以用%c来指定格式:

#include <stdio.h>
int main()
{
    printf("%c\n",'Q');
    printf("%c\n",81);
    return 0;
}

通过如下代码我们可以知道所有可打印的字符:

int main()
{
    for(int i = 32; i <= 128; i++)
         {
          printf("%c ",i);
          if(i % 16 == 0){
                         printf("\n");
                         }
          }
  return 0
}

得到结果为:

7.字符串和 \0

    在C语言中用双引号括起来的一串字符被称为字符串,例如"ABCDEF",就是字符串。字符串的打印格式可以使用%s来指定,也可以直接打印如下

int main()
{
    printf("%s\n","hellow");
    printf("hellow");
    return 0;
}

     C语言的字符串中一个特殊的知识,就是每一个字符串的末尾隐藏放着一个\0的字符,这个\0发字符是字符串结束的标志

 

     C语言中也将字符放进数组中

int main()
{
    char arr1[] = {'a', 'b', 'c'}; //arr1数组中存放3个字符
    char arr2[] = "abc"; //arr2数组中存放字符串
    printf("%s\n",arr1);
    printf("%s\n",arr2);
    return 0;
}

    得到了

    原因是因为arr1数组中并没有\0的结束字符,所以当打印完abc之后接着打印,但是是乱码,而arr2中由于字符串内部自带的结束字符\0,所以打印完abc就结束了。

    如果在arr1数组中加入字符"\0"就可以解决问题。

char arr1[] = {"a", "b", "c", "\0"};

 8.转义字符

    代码中\0,\n都是转义字符,就是转变原来意思的字符。

例如打印时n可以直接打印,但是加上\则会变成换行符,就从字符变成了换行符。

int main()
{
    printf("abcdnf");
    printf("\n");
    printf("abcd\nf");
    return 0;
}

得到结果为:

 

    C语言中还有一些像这样的转义字符,如:

  • \'   :用于字符常量'
  • \"  :用于表示字符串内部的双引号
  • \\   :用于表示反斜杠,防止其被解释为一个转义序列符
  • \a  :警报,会使终端发出警报声或者闪烁,或同时发生
  • \b :退格键,光标回退一个字符,但不删除字符
  • \n : 换行符
  • \r  :回车符,光标移动到同一行的开头
  • \t  :制表符,光标移动到下一个水平制表位,通常位下一个4/8的倍数
  • \v  :垂直分隔符,光标移到下一个垂直制表位,通常是下一列的同一列
  • \ddd :ddd表示1~3个八进制的数字。例如\130 表示字符X
  • \xdd :dd表示两个十六进制的数字。例如\x30 表示字符0
  • \0 :表示空,null字符,表示没有内容,也是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码的值是0

\b 退格符的效果:

int main()
{
    printf("acbde\n");
    printf("acbde\b\n");
    printf("ac\bde");
    return 0;
}

其中第二行printf函数打印出来的与第一行相同是因为后面没有字符替代退格的字符,而第三行中c被d给代替了,所以得到ade。 

\t 制表符的效果:

int main()
{
    printf("abcdefg");
    printf("abc\tde\tfg");
    return 0;
}

其中abc与后面的空格加起来有8个长度,de与后面的空格加起来有8个长度。 

\ddd与\xdd的效果:

int main()
{
    printf("\130");
    printf("\x30");
    return 0;
}

 

八进制中130对应的是十进制中的88,在ASCII码中是X,十六进制中的30对应的是十进制中的48,在ASCII码中是0。

9.语句和语句分类

    C语言的代码由一条条语句构成,C语言的语句可分为五类:

  • 空语句
  • 表达式语句
  • 函数调用语句
  • 复合语句
  • 控制语句

9.1 空语句

    一个分号就是一条语句的,是空语句。

int main()
{
  ;//空语句
  return 0;
}

    空语句,一般出现的地方是:这里需要一条语句,但是这个语句不需要做任何事,就可以写空语句。

9.2 表达式语句

    表达式语句就是在表达式的后边加上分号。例如:

int main()
{
    int a = 20;//表达式语句
    return 0;
}

9.3函数调用语句

    函数调用的时候,也会加上分号,就是函数调用语句。

int Add(int x, int y)
{
    return x + y;
}

int main()
{
    printf("hehe\n");//函数调用语句
    int ret = (2, 3);//函数调用语句
    return 0;
}

9.4 复合语句及控制语句

复合语句就是代码块,成对括号的代码就构成一个代码块,也被称为复合语句

控制语句用于控制程序的执行流程,以实现程序的个汇总结构方式(C语言支持三至结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,c语言有九种控制语句。分为三类:

  1. 条件判断语句也叫分支语句:if语句、swith语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。

10. 注释

    注释是对代码的说明,编译器会忽略注释,注释可以帮我们更好的理解代码。注释有两种形式:

10.1 /**/形式

    第一种方法是将注释放在/*......*/之间,内部可以分行。

/*注释*/
/*
   注释
*/

这种注释可以插在行内,但要记得将结束符号*/写上。

int fopen(char * s /* file name */,int mode);

10.2 //的形式

    第二种写法是双斜杠到行尾都属于注释。这种注释无法穿插在行内,只能是单行,可在行首也可在行尾。

//这是一行注释


int x = 1;//这也是注释

    但无论哪种注释都不能放在双引号之中,双引号里面的注释符号,会成为字符串的一部分,结束为普通符号,失去注释作用。

printf("//hello /*world*/");

 

10.3 注释会被替换

    编译时,注释会被替换成一个空格,所以min/*这里是注释*/Value会变成min Value,而不是minValue。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值