C语言学习笔记03

C语言学习笔记03

英文

n:next
std:standard:标准
h:head:头部
include:包含,包括
main:主要的,最重要的,入口
print:打印
format:格式
printf=print format=按照一定的格式进行打印输出
return:返回,结束
i:input:输入
o:output:输出

回顾:
1.计算机组成部分
   硬件
        三大件
    CPU
         数据运算和操作外设
    内存
        暂存数据,速度快,容量小
    硬盘
        永久性存储数据,速度慢,容量大
        外设
    可有可无
   软件
         操作系统
             驱动控制外设,分配CPU资源和内存资源等
         shell终端程序
             接收用户输入的命令并且执行命令
         应用程序
             QQ等

2.主流操作系统
   windows/linux/苹果/安卓/vxworks

3.linux系统的发展
   开源/1991/linus/视频:the code linux/www.kernel.org(官网)

4.linux系统理念(信仰):一切皆文件
   访问硬件必须先找到对应的文件
   访问文件就是在访问硬件本身

5.linux系统管理文件:文件系统
   不同文件系统管理文件方式不一样
    明确文件系统中相关概念:目录,文件,路径
    根目录'/'/子目录/父目录/当前目录'.'/上一级目录'..'/主目录'~'
    文件:记录了一堆的数据信息
    路径:绝对路径(首选)和相对路径 

6.linux系统命令
   pwd/clear/ls/cd/mkdir/touch/rm/cp/mv/echo(>/>>)/
   grep/cat/find/tar/whoami(查看当前用户名)    

--------------------------------------------------------------------------------------------------------------
7.掌握大名鼎鼎的linux编辑器软件:vim
7.1.常用的开发编辑器软件:vim,vscode,sublime等
      重点放在vim
7.2.vim命令格式:vim  文件名  //打开一个文件
7.3.vim三种模式:可视模式,编辑模式,命令行模式
      可视模式:只能看不能编辑
      编辑模式:可以输入各种文本信息
      命令行模式:给vim输入各种控制命令
7.4.vim三种模式之间的转换:
       明确:第一次刚执行vim命令之后,首先进入可视模式
       可视模式-----按i键或者o键或者a键---->编辑模式
       编辑模式-----按ESC键----------------->可视模式
       可视模式-----按shift+:组合键--------->命令行模式
       编辑模式-----先按ESC进入可视模式--->按shift+:组合键--------->命令行模式
7.5.vim命令行模式下相关的命令
      w:保存文件
      q:不保存并且退出vim
      wq:先保存后退出vim
      q!:强制直接退出,不保存文件
      %s/原来内容/新内容/g:将文件中原来的内容全部替换成新内容
      n1,n2s/old/new/g:将文件从n1行到n2行所有的old内容换成new内容
          例如:6,9s/小/大/g:将文件的第6行到第9行的小替换成大
      !  linux命令,例如:! ls :在vim命令中来执行linux的其他命令,再例如:! cd /home/tarena
      案例:练习vim,打开一个新文件,随意输入各种信息
7.6.vim快捷键(前提是先切换到可视模式下,然后再各种快捷键)
1)方向键以后不要用上下左右,而是用:h(左)j(下)k(上)l(右)替换
2)行选中:shift+v然后按hjkl方向键选中
    列选中:ctrl+v然后按hjkl方向键选中
3)复制:y键
4)粘贴:p键
5)剪切:x键
6)撤销:u键
7)撤销之后由反悔:ctrl+r
8)保存退出:ZZ键
9)先进入命令行模式执行:sp  文件名,实现上下分屏
   先进入命令行模式执行: vs  文件名,实现左右分屏
   目的:一个屏幕上可以同时编辑多个文件
   屏幕切换快捷键:ctrl+ww
10)搜索:先按/然后再后面输入要搜索的信息,然后按小n键表示向下搜索,按大N键表示向上搜索\
11)自动补全:ctrl+n,先输入开头的一个字符或者多个字符,然后按ctrl+n自动补全后面的内容
12)自动格式化文本内容,让代码变得整齐划一,好看:先行选中然后按=键
13)跳转到文件的末尾:G键
14)跳转到文件的开头:gg键
15)跳转到指定的某个一行:先进入命令行模式,然后输入行号即可,例如:14,跳转到14行
16)复制某几个单词,字母:先按v键,然后按方向键选中单词,字母,最后按y键复制或者按x剪切,然后按p键粘贴  
--------------------------------------------------------------------------------------------------------------
8.C语言
8.1.C语言定义:它是计算机编程的一种语言,除了C语言,还有C++,java,python等
            不管是哪种编程语言,他们都是实现人和计算机交流的
                           利用C语言能够编写一个程序,让计算机工作,例如:像显示器打印输出一段话
            例如:中国人<-----汉语------->中国人
                      中国人<-----汉语/英语-->美国人
                                      人<---------C语言/C++语言等---->计算机

            
8.2.C语言发展
      C语言之父:丹尼斯里奇
      C语言经典书籍:<>,作者丹尼斯里奇,正式推动了C语言发展
      1989,C89标准诞生
      1999,C99标准诞生,基于C89引入了一些优秀特性

8.3.人生的第一个C语言程序,C语言基本编程框架
具体实施步骤如下:
1)编写C程序
      cd /home/tarena
      mkdir stdc
      cd stdc 
      vim  helloworld.c 添加输入以下内容:
      /*
         这是我的第一个程序
         好开心啊
       */
       //这是我的第一个程序
       //好开心
      #include
      int main(void) 
      {
    printf("hello,world\n");
    return 0;
      }
     保存退出
程序说明(C语言编程规矩):
1. C程序的文件分两类:源文件和头文件,他两本质一样
    源文件都是以".c"后缀结尾
    头文件都是以".h"后缀结尾
    注意:任何C程序必须有一个源文件,可以不用自己写头文件
2. #include :include在C语言中是一个关键字(有特殊含义功能的一个单词
    不可随意使用),如果include前面加#,表示要包含一个头文件
    stdio.h:就是标准C语言的一个头文件(大神已经帮你写好了)
    此文件位于linux系统的/usr/include/目录下
    问:这一对<>什么意思呢?
    答:如果是<>,表示将来让gcc编译器到/usr/include目录下找stdio.h头文件
           如果是"stdio.h",表示将来gcc先到当前目录下找stdio.h,如果找不到再           去/usr/include目录下找  
    结论:包含头文件的两种写法:
    #include
    #include "stdio.h"
3.C程序只能有一个主函数叫main,并且main函数的前面必须是int
   并且main函数后面要跟一对圆括号,括号里面写void
   由于main函数是自己编写的,所以还要跟一对{},{}包含的内容就是main函数
   将来给CPU运行的命令,也就是程序的执行必须从main函数开始
   然后CPU从main函数依次一条条的向下执行
4.printf是一个函数,但是此函数是标准C语言已经写好的(大神写好的),咱们直接使用即可
   为了使用此函数, 必须包含头文件:stdio.h
   注意:'\n'表示换行
5.main函数中的每条语句必须跟分号来表示此条语句的结束
6.main函数最后执行return返回也就是让CPU执行到这程序就结束了
7.C程序的注释(代码的解释说明)两种方式:
    一对/*注释的内容*/:优点:多行注释,缺点:不能嵌套
    一对//后面跟要注释的内容:优点:可以嵌套,缺点:只能单行注释

2)编译C程序,执行以下命令:
    cd /home/tarena/stdc/    
    gcc helloworld.c //编译程序
    ls  -lh  //查看a.out的详细信息,此a.out就是生成最终二进制可执行程序(计算机能够执行的一个文件)
       -rwx....    a.out
    ./a.out  //运行a.out这个程序,将来CPU根据程序的要求做相关的动作

程序编译说明:
1.gcc:它是一个编译器,类似翻译官,将源文件helloworld.c翻译成a.out计算机能够识别
            能够看懂的可执行文件
   gcc使用命令格式:gcc  源文件 (变态的编译方法),此种写法最终生产的文件都叫a.out
   问:如果不想取名叫a.out,怎么办呢?
   答:搞清楚gcc工作流程

8.4.gcc编译器特性
1)功能:将源文件翻译成可执行文件
2)gcc工作要经过三步骤(目前了解即可):
   1.先预处理
      就是将别人的头文件内容全部拷贝到当期源文件中
      例如:#include ,意思就是将stdio.h里面的内容全部拷贝到helloworld.c中
   2.然后编译
      就是将预处理之后的源文件翻译成可执行文件(计算机对此文件是能够识别的)
   3.最后链接
      就是将别人写好的函数代码,例如printf,加载到自己编写的文件中,最终翻译成CPU
      能够执行运行的可执行文件
    问:以上三步骤如何分步骤实现呢?
    答:只需gcc的相关的选项即可完成
3)掌握gcc的常用选项:
  -o:  后面跟要生成的文件
  -E:进行预处理
       例如:gcc -E helloworld.c -o helloworld.i
                 语义:对helloworld.c进行预处理,生成预处理以后的文件helloworld.i
  -c:只编译不链接,只是把自己的源文件生成可执行文件,此过程不会将别的函数加载过来
       例如:gcc -c -o helloworld.o helloworld.i
    语义:将预处理文件helloworld.i只编译不链接生成可执行文件helloworld.o
                            helloworld.o此文件CPU识别,但是不能运行,因为还没有加载别人的函数

案例:演练gcc的三种使用方式
实施步骤如下:
cd /home/tarena/stdc/
ls  helloworld.c //查看文件是否存在
第一种编译方式:流氓方法
gcc  helloworld.c  //生成a.out
./a.out

第二种编译方式:分步骤编译
gcc -E -o helloworld.i helloworld.c //先预处理
vim helloworld.i //挑战看看此文件,只看文件的最后的内容(是自己编写的)
gcc -c -o helloworld.o helloworld.i //然后只编译不链接
gcc -o helloworld  helloworld.o //最后将helloworld.o进行链接操作生成最终的可执行文                  件helloworld
./helloworld

第三种编译方式:一步到位
gcc -o helloworld helloworld.c 
注意:此方法也就是将方法2进行合并了!

8.5.详解printf函数
1)此函数属于标准C的函数,直接使用即可
   但是需要包含头文件stdio.h
2)此函数的使用语法格式:
   printf("输出的内容\n");
   例如:
   printf("hello,world\n"); //输出hello,world信息之后再加一个换行
   printf("hello,world"); //只输出hello,world信息,但是没有换行
   printf("%d, %d\n", 1, 2); //输出1,2
   说明:%d:占位符
             第一个%d给数字1占位,第二个%d给数字2占位
--------------------------------------------------------------------------------------------------
9.详解内存特性和概念
1)内存功能:用于暂存程序和程序中的各种数据(例如:1,2,3等)
   问:为何不用CPU和硬盘呢?
   答:CPU存的数太少了
          硬盘速度太慢了
          所以选择内存
          程序玩的不是程序,玩的是内存
2)内存相关的概念
   字节(俗称格子):就是将内存划分为一块一块的区域,好比划分为一个一个格子一样
                每块区域简称字节,能够存储程序中的数据,也就是内存中最小的
                             存储单位就是字节
   地址:就是给内存的每个字节指定一个编号,从0开始,类似给每个房间指定一个房间号一样
           此编号简称地址
   存储区:就是一个字节或者多个字节组成的存储区域,简称存储区
                 问:为何有这个概念呢?
    答:比如现在有一个数大小为300亿,明确告诉你一个字节肯定存不下300亿这个数
           所以需要4个字节的内存来存储300亿这个数,而这个4字节的内存区域构成了
                        存储区
   首地址:存储区的第一个字节的地址  
                 内存条
                 *  *   *    *    ****   ....
                 0 1  2   3    4567 ....   
         首地址:4    

C语言学习笔记03_第1张图片            

 
  

  

    


 

你可能感兴趣的:(c语言学习笔记,c++,linux)