C语言基础

C语言基础(上)

一. 第一个C语言程序

#include<stdio.h>

int main()

{

  printf("Hello world");

  return 0;

} 

xxx.c 叫做源文件

xxx.h 叫做头文件

在VS2022中创建的步骤

step1. 创建(文件名称后要加上.c)

step2 创建源文件(方法:在解决方案管理器中找到源文件,右击鼠标找到添加,再找到新建项即可创建)

    注意:c语言的源文件命名末尾应该为.c,一般默认是xxx.cpp(这是c++的文件),所以要改过来

step3 开始写文件

二. printf和库函数

这⾥简单的介绍⼀下 printf , printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏幕)上进⾏信息的打印。上⾯的代码是使⽤ printf 函数打印字符串。只要把想要打印的⼀串字符放在双引号中并传递给printf函数就可以打印。

同时printf也可以打印其他类型的数据,例如:

printf("%d\n", 'm' );

从上面的代码可以发现%d这一陌生的符号,它的名字叫占位符,会被后面的指替换

注意:当我们使用库函数的时候,是要包含头文件的,例如:在用printf时需要包含的就是stdio.h这个头文件

#include<stdio.h>

三.字符与ASCLL编码

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号
括起来的,如:‘a’, ‘b’,‘@’,‘#’等。

我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准?ASCII编码, C语⾔中的字符就遵循了?ASCII编码的⽅式。在这里插入图片描述

这张表不需要死记硬背,只要在面对字符是能找到对应的十进制数字即可

四. 字符串与\0

1.字符串的定义:由双引号引起的东西叫做字符串,例如:“abc”

2.\0

注:此处先使用数组举例子,后面的文章会详细解释.%s的作用是打印字符串(后面会有一个大总结)

#include<stdio.h>
Int main()
{
    char arr1[ ]="abc";
    char arr2[ ]={'a','b','c'};
    printf("arr1=%s\n",arr1);
    printf("arr2=%s\n",arr2);
    return 0;
}

这是打印出来的结果是

arr1=abc

arr2=abc烫烫烫…

由此我们可以发现在arr2这个数组中出现乱码的现象,其实问题就是arr1中有\0,而arr2中没有\0

下面我将详细的介绍\0:

1.\0是字符串结束的标志,也就是说如果字符后没有\0,那么电脑是无法识别打印的长度,因此会出现arr2的输出结果

2.\0不是字符串内容,就如arr1中\0并没有出现,因为在字符串中\0是可以省略的,但是在arr2这里是不可省略的,如果不想出现乱码,则应改为

  ```
  char arr2[ ]={'a','b','c','\0'};
  ```

下面再举一个例子能更好的理解\0

int main()

{

 char arr1[ ]="abc";

 char arr2[ ]={'a','b','c'};

 printf("arr1=%d\n",strlen(arr1));//%d:打印整形(有符号的整形),strlen是用来计算字符串长度的

 printf("arr2=%d\n",strlen(arr2));

 return 0;

}

输出结果为

arr1=3

arr2=随机值

因此可以看出\0是字符串结束的标志,因为arr2没有\0,所以计算机会默认继续往后数,知道数到\0为止。

五. 转义字符

也许在前⾯的代码中你看到 \n , \0 很纳闷是啥。其实在字符中有⼀组特殊的字符是转义字符,转义
字符顾名思义:转变原来的意思的字符。

\n 是⼀个转义字符表⽰换⾏的意思,我们可以简单的理解为 \ 让 n 的意思
发⽣了转变, n 本来是⼀个普通的字符,被 \ 转义为换⾏的意思。

C语⾔中像这样的转义字符还有⼀些,具体如下:

\‘:⽤于表⽰字符常量’

printf("%c\n",'''); //此时输出是错误的,如果只想打印一个单引号则应改为 parintf(“%c\n”,'\'');

\":⽤于表⽰⼀个字符串内部的双引号

\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。

\\:用于表示一个反斜杠,防止它被解释成一个转义字符

\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。

\b :退格键,光标回退⼀个字符,但不删除字符。

\f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。

\n :换⾏符。

\r :回⻋符,光标移到同⼀⾏的开头。

\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个8的倍数(其实就是空了一个大格)

\v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。

\ddd: ddd为1-3个8进制数字

include<stdio.h>
int main()
{
 printf("%d\n,strlen("c:\test\32\test.c")); 
 return0;
}

\32:注32是两个8进制数组成,所以在计算字符串长度时要把\32看作一个字符串

printf("%c\n",'\134');

先把132转换为十进制 所以1乘8的2次方+3乘8的1次方+2乘8的0次方=90,然后进行查ASCLL表可得字母Z

\xdd: dd表示2个十六进制数字

printf("%c\n",'\x61');

\x61:注61是两个16进制数字,所以转换成10进制数即可61=6乘16的一次方+1乘16的0次方=97,最后查ASCLL表可得答案为a

六. 语句

c语言的代码是由一条条语句组成的,那么下面将介绍语句的分类

  • 空语句

  • 表达式语句

  • 函数调用语句

  • 复合语句

  • 控制语句

    1. 空语句:一个分号就是一条语句,这个就叫做空语句

      include<stdio.h>
      int main()
      {
       ;
       return 0;
      }
      
    • 表达式语句:就是表达式后面加上分号

      例如:int a=1;这个就叫做表达式语句

    • 函数调用语句;例子:printf(“hello\n”);

    • 控制语句:用于控制程序的执行流程,以实现程序的各种方式(c语言的三种结构:顺序结构,选择结构,循环结构),它们由特定的语句定义符组成,c语言有九种控制语句

      1.条件判断语句也叫分⽀语句:if语句、switch语句

      2.循环执⾏语句:do?while语句、while语句、for语句

      3.转向语句:break语句、goto语句、continue语句、return语句

七. 注释

尽量使用//来注释,在vs2022中有批量注释的快捷键

八. 数据类型

数据类型中文字节
char字符数据(a,b,c)1
short短整型2
int整型(整数)4
long长整型4
float单精度浮点数(小数)4
double双精度浮点数8

关于字节的介绍:

字节是计算机的单位

  • bit:比特位

  • byte:字节

  • kb:1kb=1024byte

  • mb:1mb=1024kb

  • tb: 1tb=1024mb

  • pb: 1pb=1024tb

  • 1 byte =8bit 即 1字节=8比特位

九. signed 与unsigned

作用:用于修饰字符型和整型

signed:表示一个类型带有正负号

unsigned:只能表示0和正整数

int:有符号的int就等价于 signed int (有符号整型)可以简写成int

unsigned int :无符号整型

整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。
⽐如,16位的 signed short int 的取值范围是:-32768~32767,最⼤是32767;⽽
unsigned short int 的取值范围是:0~65535,最⼤值增⼤到了65,535。32位的 signed
int 的取值范围可以参看 limits.h 中给出的定义

注意:C语⾔规定 char 类型默认是否带有正负号,由当前系统决定。
这就是说, char 不等同于 signed char ,它有可能是 signed char ,也有可能是
unsigned char ,这⼀点与 int 不同, int 就是等同于 signed int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值