目录

1,C语言是什么?

2,常见VS项目和源文件,头文件介绍

        VS项目
        源文件,头文件

3,第一个C语言程序

4,main函数

5,printf和库函数

6,关键字介绍

7,字符与ASCII的编码

        字符
        ASCII的编码

8,字符串和’\0’

        字符串
        ’\0’

9,转义字符

10,注释


1,C语言是什么?

C语言是一种计算机的高级语言,是我们在学习编程的基础语言,往后的语言Java,python,c++,等的语言都是相对基础的计算机语言,因此学好一门C语言的编程语言是很有必要的。

2,常见VS项目和源文件,头文件介绍

VS项目:

那我们要学C语言需要一个程序来让我们来学习,我通常会使用VS2026,它的功能比起Dev.cpp 来说,是比较多的,能够调试等功能,是Dev.cpp 是无法比拟的。

C语言是一门编译型计算机语言,通常我们在写C语言的代码是,计算机是无法执行的,所以我们必须使用到编译器的翻译和链接器的链接,生成二进制代码让计算机可读取,才可执行。

C语言代码通常是以 .c  的文件形式在文件中的,要是.c文件的变成可执行程序的.exe 文件就会利用以下两个操作: 编译和链接

        

计算机会通过编译器把.c文件变成.obj文件,再通过链接其把.obj文件变成.exe 可执行程序。

源文件和头文件:

对于的就是 .c 和 .h 文件

3,第一个C语言程序

例如: 我想要一个打印出hello world 的代码


#include <stdio.h>

int main(){

printf("hello world\n");

return 0;

}

写C语言的程序,就得按照C语言的规则来写才能来让代码执行起来。

4,main函数

C 程序的入口:在C语言当中函数其实有很多种,但唯独在main函数是最特殊的,因为没有main 函数整个代码是没办法执行起来的,换句话说所以代码的执行都要在main函数才可以执行。

main函数的一些注意点:

唯一性:在一个代码中main函数不可能存在第二个;

完整的main函数代码是如下:

int main(void){
return 0;

};

但不一定需要int ,在一些老的教材里存在main(){}; 这中表达的虽然没事但是,建议不要

补充:void 代表的意思为空,它的属于声明里的空型。

5,printf和库函数

printf:

是打印的函数,可以让exe程序显示出想要的数值。

还可以打印出声明的变量出来。

printf(“%d”,100);

但前提是需要用一个库函数为支撑#include <stdio.h>

库函数:

在C语言里库函数,也是函数的一种,库函数相当于是已经在编译器已经提前把代码编辑好的函数,而这种库函数,被称为标准库。库函数相当于是工人的工具我们需要的时候就会区准备好对应的工具。

例如:

我们需要打印的工具就会去使用printf

对应的库函数就是<stdio.h>

#include <stdio.h>

我们需要申请空间就会使用malloc

对于的库函数<stdlib.h>

#include <stdlib.h>

等等这就是库函数的作用

所有的标准库函数:https://cplusplus.com/reference/clibrary/

6,关键字介绍

C语言种已经存在的,不需要库函数的作用就可以直接使用的

auto  break  case  char  const  continue  default  do  double  else  enum  extern

float  for  goto  if  int  long  register  return  short  signed  sizeof  static  struct

switch  typedef  union  unsigned  void  volatile  while

C语言关键字的全部介绍

https://zh.cppreference.com/w/c/keyword/

7,字符与ASCII的编码

#include <stdio.h>

int main(){

char arr[] = "hello world";


printf("%s", arr);

return 0;

}

字符:

通常对应的声明变量使用的是char

char的对于的范围在256 ,(signed)在有正负数范围是-128到127,(unsigned)无符号数的范围就是0到255。是在所有声明里最小的一个正因为是最小才会用来充当字符使用。

补充:

signed和unsigned 正如上文所述有符号数,和无符号数

通常加在声明的前面

例如:unsigned int

一般int 是默认有符号数的所以一般不会有signed不会使用(因为加了和没加没有区别),当然在不同的编译器可能就有所不同。

在一些特定的情况下不需要使用负数是可以使用unsigned来进行扩容,当然int等一些声明变量本身没有扩容,是把负数的部分利用起来,来实现一个扩容的效果。

unsigned的一些使用环境:身高,体重,年龄等等。

ASCII的编码

因为计算机不认识abcd(*_),所以在人们设计C语言的时候就会编码来排好每一个数值对应那些小字母,符号等等的字符这就是ASCII的编码。

         

我们不需要记住所有的ASCII码表中的数字使用时查看就可以,不过我们最好能掌握几组特殊的数据:

字符A~Z的ASCII码值从65~90

字符a~z的ASCII码值从97~122

对应的大小写字符(a和A)的ASCII码值的差值是32

数字字符0~9的ASCII码值从48~57

换行\n的ASCII值是:10

在这些字符中ASCII码值从0~31这32个字符是不可打印字符,无法打印在屏幕上观察

为什么说char来充当字符,因为ASCII的编码对于的字符并不是很多所以就用char来使用,但也可以int ,short也是可以但这样只会导致,内存的浪费,所以不推荐。

补充:在初学者很容易把char认为是字符型,其实并没有字符型这个概念的,只是因为长期的没有一个系统的学学习导致,知识的疏漏,以为printf(“%s”,”hello”);才会意识的认为char是字符型。

而%s %c通常都是对于的字符串和字符,而想准确char的整形打印出%hhd。

一般在C语言中这些%形式有一个专业术语叫:格式说明符

所以的类型只用

整形 (char  ,short  ,int  ,long  ,long long )

对应的格式说明符:%hhd  %hd   %d  %ld   %lld

浮点型 (float ,double,long double )

对应的格式说明符:%f   %lf   %Lf(注意不是%llf)

空型(void)

自定义型( 结构体  struct  , 联合体(公用体)union, 枚举 enum)

扩展:

其他的对应的格式说明符:

字符%c ,字符串%s ,十进制%d等等 ,八进制%o %O,十六进制:%x %X,地址%p,无符号(unsigned)%u等等(就是把对应的整形形式的d改成u)

(注意浮点数是没有无符号型的)

还有sizeof等等  %zu(通常%zu是对应函数回归的size_t的形式回归作的格式说明符,而size_t在x86和x64的环境下所占的字节也有所不同,在x86的环境就占4个字节,在x64又占8个字节)

8,字符串和’\0’

字符串:

            

在C语言中要表达字符串就是以“”双引号的形式来存取,如图的“hello world”,这就是一个字符串,要打印出来就用%s来表示。

‘\0’:

在字符串中都会在末尾的地方存在一个‘\0’

‘\0’的功能就是让打印停止下来,是想让计算机知道这个字符串已经到了末尾

当没有0的时候:

#include <stdio.h>
int main(){

char arr1[5] = "hello";

char arr2[] = { 'w','o','r','l','d' };

printf("%s\n", arr1);

printf("%s\n", arr2);

return 0;
}

为什么会打印出:

没有0,计算机就不会认为字符串没有介绍就会一直打印下去,直到它遇到0为止,而没有被记录的值就会是随机值,他们没有在ASCII码值里没有对于的字符就会打印出乱码。

那为什么第一行为什么还会打印出world

按理来说我们一个是打印出

这就要说大C语言的内存存储方式了,在C语言里,都会安顺序的存取

arr1的地址0x000000e0d854f864

arr2的地址0x000000e0d854f884

两个的差距只在32(0x是16进制)

所以他们在第32位后就会相遇,换句话说打印出32个乱码就会打印出来world

那我如果把两个换个位置就会有不一样的打印结果

#include <stdio.h>

int main(){

char arr2[] = { 'w','o','r','l','d' };

char arr1[5] = "hello";

printf("%s\n", arr1);

printf("%s\n", arr2);

return 0;

}

9,转义字符

我们可以看到修改的前后代码输出的结果,截然不同的,那这是为什么呢?

这就是转义字符的问题,n是一个转义字符表示换行的意思,我们可以简单的理解为让的意思发生了转变,

\n本来是一个普通的字符,被转义为换行的意思。

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

\?:在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了。

\':用于表示字符常量工

\":用于表示一个字符串内部的双引号

\\:用于表示一个反斜杠,防止它被解释为一个转义序列符。

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

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

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

\n:换行符。

\r:回车符,光标移到同一行的开头。

\t:制表符,光标移到下一个水平制表位,通常是下一个4/8的倍数。

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

下面2种转义字符可以理解为:字符的8进制或者16进制表示形式

\ddd:d d d表示1~3个八进制的数字。 如:\130  表示字符X

\xdd:d d表示2个十六进制数字。     如:\x30  表示字符0

\0:null字符,代表没有内容,\0就是ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0.

10,注释

注释一般会用两种// 和/**/

注意不是\\而是除号的/

注释的不会影响代码的运行

注释的功能,是便于给他人,快速浏览的便捷功能。

//和/**/

//是对于后的一整行的代码都是注释功能

/**/是对在*号以内是注释功能。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐